9个版本
0.1.14 | 2023年3月9日 |
---|---|
0.1.12 | 2023年2月6日 |
0.1.9 | 2022年4月13日 |
0.1.8 | 2021年6月3日 |
0.1.4 | 2020年2月6日 |
#420 in 命令行工具
39KB
968 行
Jaslog
Jaslog 是一个处理结构化日志的日志阅读器,它可以处理非JSON行,显示漂亮的彩色日志,并可以根据JSON的字段进行过滤。
- 非JSON行将被显示,但会清楚地标记
- 过滤器适用于任何字段,即使是未识别的字段
- 如果未识别JSON的结构,所有字段都将显示在日志行上
- 无法控制显示哪些字段
- 无法控制格式化
它将与某些特定的JSON结构特别兼容(参见“支持的格式”)。
安装
使用 cargo install
cargo install jaslog
使用预构建的二进制文件
- 从 最新版本 下载二进制文件
- 将其放入PATH的一部分的文件夹中
- 使其可执行(
chmod +x
)
用法
基本用法
$ jaslog file.json.log
或使用stdin
$ cat file.json.log | jaslog
CLI参数
USAGE:
jaslog [OPTIONS] [--] [input_file]
ARGS:
<input_file> Input file to read
OPTIONS:
-f, --filter <filters> Filter the logs. Example: -f app=this -f module=+Drive (use
'+' to search within the field, use '^' to exclude within the
field)
-h, --help Print help information
-n, --lines <number_of_lines> Number of lines to read.
-V, --version Print version information
要过滤,语法是
<字段>=<值>
:搜索字段的精确值<字段>=+<值>
:搜索字段中的值(欢迎提出更好的语法建议 :-P)<字段>=^<值>
:搜索字段中值的不存在(欢迎提出更好的语法建议 :-P)
$ jaslog file.json.log -f level=info
您还可以请求只读取前n行
$ jaslog file.json.log -f level=info -n 50
显式支持的格式
当然欢迎提出支持新格式的pull requests!
Elixir日志
{
"app": "ecto_sql",
"level": "info",
"message": "create index etc...",
"metadata": {},
"module": "Elixir.Ecto.Migration.Runner",
"pid": "#PID<0.280.0>",
"timestamp": "2019-12-18T10:55:50.000393"
}
Logstash的jsonevent-layout日志
{
"@timestamp": "2020-01-13T12:34:01.740Z",
"source_host": "04fc4fd30dc3",
"file": "Dispatcher.java",
"method": "tryAcceptLeadershipAndRunJobs",
"level": "DEBUG",
"line_number": "927",
"thread_name": "flink-akka.actor.default-dispatcher-3",
"@version": 1,
"logger_name": "org.apache.flink.runtime.dispatcher.StandaloneDispatcher",
"message": "Dispatcher akka.tcp://flink@04fc4fd30dc3:6123/user/dispatcher accepted leadership with fencing token 00000000000000000000000000000000. Start recovered jobs.",
"class": "org.apache.flink.runtime.dispatcher.Dispatcher",
"mdc": {}
}
Log4J的JSONLayout日志
{
"thread": "main",
"level": "INFO",
"loggerName": "org.apache.flink.runtime.dispatcher.DispatcherRestEndpoint",
"message": "Starting rest endpoint.",
"endOfBatch": false,
"loggerFqcn": "org.apache.logging.slf4j.Log4jLogger",
"instant": {
"epochSecond": 1622724607,
"nanoOfSecond": 420000000
},
"threadId": 1,
"threadPriority": 5
}
发布
- 在Cargo.toml中更新版本
- 提交
- 使用
v<版本>
标签,然后推送 - 运行
cargo publish
依赖关系
~5–15MB
~180K SLoC