1 个不稳定版本
0.1.0 | 2023年2月12日 |
---|
#333 在 模板引擎
29KB
420 行
drainrs
drainrs 实现了自动日志解析的 Drain 算法。
示例
cargo run ./apache-short.log | tail
{"template":"[Sat Jun <*> <*> <*> [error] [client <*> script not found or unable to stat: /var/www/cgi-bin/awstats",
"values":["11","03:03:04","2005]","202.133.98.6]"]}
{"template":"[Sat Jun <*> <*> <*> [error] [client <*> script not found or unable to stat: /var/www/cgi-bin/awstats",
"values":["11","03:03:04","2005]","202.133.98.6]"]}
{"template":"[Sat Jun <*> <*> <*> [error] [client <*> script not found or unable to stat: /var/www/cgi-bin/awstats",
"values":["11","03:03:04","2005]","202.133.98.6]"]}
{"template":"[Sat Jun <*> <*> <*> [error] <*> Can't find child <*> in scoreboard",
"values":["11","03:03:04","2005]","jk2_init()","4210"]}
{"template":"[Sat Jun <*> <*> <*> [notice] workerEnv.init() ok <*>",
"values":["11","03:03:04","2005]","/etc/httpd/conf/workers2.properties"]}
{"template":"[Sat Jun <*> <*> <*> [error] mod_jk child init <*> <*>",
"values":["11","03:03:04","2005]","1","-2"]}
{"template":"[Sat Jun <*> <*> <*> [error] [client <*> script not found or unable to stat: /var/www/cgi-bin/awstats",
"values":["11","03:03:04","2005]","202.133.98.6]"]}
词汇表
日志记录 是文本文件中的一个条目,通常是单行,但不必是。
例如 [Thu Jun 09 06:07:05 2005] [notice] Digest logline here: done
日志模板 是用于格式化日志记录的字符串模板。
例如在 Python 格式中,它看起来像这样
"[{date}] [{log_level}] Digest logline here: {status}".格式化(...)
或者 drain.py 和 drain3.py 输出的语法
"[<date>] [<log_level>] Digest logline here: <*>"
待办事项
-
Python 版本中可配置的任何参数在此处都尚未可配置。
-
第一个 drain 允许
split_line_provided
,这使得你可以编写一个简单的令牌映射器,如下所示<时间戳> <日志级别> <内容>
然后 drain 仅将其逻辑应用于 <content>
。
Drain3 看起来已经放弃了这一点,转而使用用户代码侧的预处理,这很公平,尽管这个功能从 cli/无编码的角度来看非常有帮助。
- Drain3 允许“遮罩”,这似乎是为了识别类似 IP 或数字的值。我们对此有初步支持,但无法从类外部配置,且用户界面尚未定义。
依赖关系
~2.8–4.5MB
~78K SLoC