44 个版本 (稳定版)
4.10.0 | 2024年5月21日 |
---|---|
4.8.0 | 2023年12月21日 |
4.7.0 | 2023年11月29日 |
4.4.0 | 2023年5月14日 |
0.3.3 | 2017年7月19日 |
在 命令行工具 中排名第 60
每月下载量 34 次
410KB
1.5K SLoC
fblog
一个用于查看 JSON 日志文件的简单工具。
打印特定字段
fblog -a message -a "status > a" sample_nested.json.log
日志前缀
如果您为多个 pod 查询 docker 或 kubectl,它将前缀日志行: PODNAME | {"message": "test"}
. fblog
可以解析此信息并将其添加到消息中。只需使用 -p
。
过滤
要过滤日志消息,可以使用 lua。如果您不确定哪些变量可用,可以使用 --print-lua
来查看 fblog 生成的代码。
fblog -f 'level ~= "info"' # will print all message where the level is not info
fblog -f 'process == "play"' # will print all message where the process is play
fblog -f 'string.find(fu, "bow.*") ~= nil' # will print all messages where fu starts with bow
fblog -f 'process == "play"' # will print all message where the process is play
fblog -f 'process == "rust" and fu == "bower"'
fblog --no-implicit-filter-return-statement -f 'if 3 > 2 then return true else return false end'
# not valid lua identifiers like log.level gets converted to log_level.
# Every character that is not _ or a letter will be converted to _
fblog -d -f 'log_level == "WARN"' sample_elastic.log
# nested fields are converted to lua records
fblog -d -f 'status.a == 100' sample_nested.json.log
# array fields are converted to lua tables (index starts with 1)
fblog -d -f 'status.d[2] == "a"' sample_nested.json.log
自定义
fblog
尝试检测日志条目的消息、严重性和时间戳。此行为可以自定义。有关更多信息,请参阅 --help
。
您可以为 fblog 消息自定义格式:格式化输出
fblog -p --main-line-format "{{#if short_message}}{{ red short_message }}{{/if}}" sample.json.log
以下由 fblog 提供的净化变量
- fblog_timestamp
- fblog_level
- fblog_message
- fblog_prefix
有关默认格式,请参阅 --help
嵌套值注册为对象。因此,您可以使用 nested.value
来访问嵌套值。
handlebar 辅助工具
- 粗体
- 黄色
- 红色
- 蓝色
- 紫色
- 青色
- 绿色
- 颜色_rgb 0 0 0
- 大写
- 级别样式
- 固定大小 10
NO_COLOR
fblog
如果存在 NO_COLOR
环境变量,将禁用颜色输出。
消息占位符替换
消息中的占位符(fblog_message
)可以用上下文对象或数组中的对应值替换。要启用替换,请传递--s
标志或设置上下文键(--c context
)或占位符格式(--F {key}
)。
请注意,占位符格式应写作<PREFIX>key<SUFFIX>
,其中它会匹配具有key
键的占位符。
示例
给定以下日志(称为example.log
)
{"message": "Found #{count} new items.", "extra_data": {"count": 556}, "level": "info"}
使用以下参数运行
fblog -c extra_data -F '#{key}' example.log
结果
安装
cargo install fblog
可在包管理器中找到:[AUR](https://aur.archlinux.org/packages/fblog/),[brew](https://formulae.brew.sh.cn/formula/fblog)
日志尾部跟踪
fblog
不支持原生日志尾部跟踪,但这很容易实现。
tail -f file | fblog
或者使用kubernetes工具,例如
kubectl logs -f ... | fblog
通常,您可以向fblog管道传递任何无限流。
shell自动完成
fblog --generate-completions <shell>
配置文件
fblog
从名为fblog.toml
的文件中读取其配置,该文件位于
Linux: $XDG_CONFIG_HOME
或$HOME/.config
Windows: {FOLDERID_RoamingAppData}
macOS: $HOME/Library/Application Support
如果该文件不存在或为空,[这是默认配置](https://github.com/brocode/fblog/blob/2510306dc2c92acb8b09b589aaf072cd6fe2a173/default_config.toml)。
日志级别
这些级别将由fblog着色
trace
debug
info
warn
error
fatal
您可以映射额外的级别值(用于输出和着色)
[level_map]
10 = "trace"
20 = "debug"
30 = "info"
40 = "warn"
50 = "error"
60 = "fatal"
# these values for example are used by https://npmjs.net.cn/package/bunyan#levels
k9s
在文件~/.config/k9s/plugin.yml
中添加以下内容
plugin:
fblog-pod:
shortCut: Shift-L
confirm: false
description: "fblog"
scopes:
- pods
command: sh
background: false
args:
- -c
- "kubectl logs --follow -n $NAMESPACE $NAME | fblog"
fblog-container:
shortCut: Shift-L
confirm: false
description: "fblog"
scopes:
- containers
command: sh
background: false
args:
- -c
- "kubectl logs --follow -n $NAMESPACE $POD -c $NAME | fblog"
fblog-pod-all:
shortCut: Shift-A
confirm: false
description: "fblog -d"
scopes:
- pods
command: sh
background: false
args:
- -c
- "kubectl logs --follow -n $NAMESPACE $NAME | fblog -d"
fblog-container-all:
shortCut: Shift-A
confirm: false
description: "fblog -d"
scopes:
- containers
command: sh
background: false
args:
- -c
- "kubectl logs --follow -n $NAMESPACE $POD -c $NAME | fblog -d"
依赖项
~9–19MB
~262K SLoC