2 个版本
0.1.1 | 2019 年 12 月 15 日 |
---|---|
0.1.0 | 2019 年 2 月 3 日 |
#1444 在 文件系统
27KB
531 行
trufflehunter
日志文件搜索工具
USAGE:
hun [FLAGS] [OPTIONS] [ARGS]
FLAGS:
-h, --help Prints help information
--long-help Long help information explaining formats and time expressions
-V, --version Prints version information
--verbose Provide the precise time range and line numbers
OPTIONS:
-e, --end-line <n> The last line to search to
-f, --format <rx> The time stamp format
-s, --start-line <n> The first line to search from
ARGS:
<LOG> The log file to search in
<WHEN>... The period of time to search for events in
Trufflehunter (hun) 是一个用于快速从指定时间范围内提取日志文件中行的工具。它所需的参数是日志文件名和时间表达式。
示例
> hun log.txt from 3 am today until 3:15
2019-01-12 3:00:01 -- tomorrow and tomorrow and tomorrow
sometimes there's garbage between timestamps
2019-01-12 3:05:13 -- creeps in this petty pace from day to day
2019-01-12 3:06:00 -- to the last syllable of recorded time
[exit stage left pursued by bear]
2019-01-12 3:10:23 -- and all our yesterdays have lighted fools
2019-01-12 3:14:59 -- the way to dusty death
> hun --verbose log.txt from 3 am today until 3:06
lines 12345 - 12349
2019-01-12 3:00:01 -- tomorrow and tomorrow and tomorrow
sometimes there's garbage between timestamps
2019-01-12 3:05:13 -- creeps in this petty pace from day to day
2019-01-12 3:06:00 -- to the last syllable of recorded time
[exit stage left pursued by bear]
时间表达式
Trufflehunter 使用 two_timer crate 解析时间表达式。它能理解的时间表达式的范围很难一一列举。通常,它们符合以下模式之一
<time>
from <time a> to <time b>
<period> around/before/after <time>
two_timer 解析器旨在模拟英语时间表达式的语义。您可以尝试看看它将接受什么。如果有疑问,具体一些不会有害。例如:
5 minutes before and after 3:13:45 PM on June 5, 1910
时间戳格式
时间戳格式必须是一个可以编译成正则表达式并具有“年”、“月”、“日”、“分钟”、“小时”和“秒”等命名捕获组的字符串。不需要命名捕获,但没有捕获的格式在查找时间戳时不会做得很好。请注意,在 Rust 正则表达式中不能重用命名捕获名称。表达式
(?<foo>f) (?<bar>b) | (?<bar>b) (?<foo>f)
是不合法的。
默认格式是
(?:[^\d'"`>]|^)(?P<year>[0-9]{4})\D{1,2}(?P<month>[0-9]{1,2})\D{1,2}(?P<day>[0-9]{1,2})\D{1,2}(?P<hour>[0-9]{1,2})\D{1,2}(?P<minute>[0-9]{1,2})\D{1,2}(?P<second>[0-9]{1,2})(?:[^\d'"`<]|$)
这是为了匹配大多数日志时间戳,而不匹配日志中 SQL 或 JSON 或 XML 等数据序列化语言中的引号时间戳。
显然,在命令行上键入这些内容相当多。通常,默认模式将匹配日志文件的日期。
如果某一行没有时间戳,则将其视为与之前带有时间戳的最接近的行具有相同的时间戳。
起始行和结束行
–start-line 和 –end-line 选项允许您在日志行顺序错误或时间格式失败的情况下进行操作。如果 Trufflehunter 因为遇到顺序错误或“顺序错误”的行而错误,您可能可以通过指定要搜索的行的子范围来绕过这些粗糙的部分。
名称
Trufflehunter 猎取的是日志中期望的时段。Trufflehunter 也是《纳尼亚传奇》中一只会说话的獾的名字。
依赖关系
~4.5–6.5MB
~114K SLoC