将结构化JSON日志转换为可读输出

jsonlog-cli的Python项目详细描述


jsonlog命令行界面

一个人类可读的JSON日志格式化程序。在

它是为与jsonlog一起使用而构建的,但是可以很好地与任何 使用行分隔的JSON。在

Example output

使用

有关所有选项,请参见jsonlog --help。在

键值模式

将文件作为唯一的参数传递给jsonlog,或默认从STDIN读取。在

jsonlog kv docs/example.log
^{pr2}$
cat docs/example.log | jsonlog

仅显示timestampmessage字段:

jsonlog kv --key timestamp --key message docs/example.log

配置要显示的多行值的键(可以指定 多次,默认为traceback键。)

jsonlog kv --key timestamp --key message --multiline-key traceback docs/example.log

配置密钥以提取并用作记录级别,控制 每行打印的颜色(默认为level键)。在

jsonlog kv --level-key level --key timestamp --key message --multiline-key traceback docs/example.log

模板模式

仅显示timestampmessage字段:

jsonlog template --format "{timestamp} {message}" docs/example.log

还显示多行键(如果存在):

jsonlog template --format "{timestamp} {message}" --multiline-key traceback docs/example.log

配置

支持将命名为“patterns”的方法收集 jsonlog的键值和模板模式。如果~/.config/jsonlog/config.json 存在,它将在启动时加载。所有字段都应该是可选的。在

下面的示例配置文件创建名为basic的模式,并 comprehensive用于键值和模板模式。每种模式都会 显示传入日志的timestampmessage字段。模式 namedcomprehensive覆盖所有字段,设置它们的默认值。在

创建一个名为default的模式将设置默认选项 已指定图案。命令行选项始终重写 应用程序的默认配置、配置文件和选定的 图案。在

{"keyvalues":{"basic":{"priority_keys":["timestamp","message"]},"comprehensive":{"level_key":"level","multiline_json":false,"multiline_keys":[],"priority_keys":[],"removed_keys":[]}},"templates":{"basic":{"format":"{timestamp} {message}"},"comprehensive":{"level_key":"level","multiline_json":false,"multiline_keys":[],"format":"{timestamp} {message}"}}}

multiline_json选项将使用缓冲区解析传入的数据。这是 很少有用,但有些应用程序(例如ElasticSearch)输出JSON split 跨越多条线。传入的数据将被缓冲,直到整个缓冲区 被解析为JSON或新行以{开头。可以 立即解析为JSON的不会被缓冲(首先刷新缓冲区)。在

调试

jsonlogCLI有一些在调试时很有用的标志。以下内容 将内部日志作为JSON打印到STDERR。在

jsonlog --log-path=- --log-level=debug kv ...

作者

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
有没有一种方法可以将不同的java web应用程序组合到一个web应用程序(war)中而不相互影响?   java一次屏蔽两位   java如何在多个类上初始化元素?   java在后台服务中处理通知或使用GCM(或其他推送通知服务)   java从const方法调用JNI函数   javascript如何使用函数/方法返回?   Java优化:声明类变量与使用临时变量   java字符算术基数8 vs基数10   Java流收集要存储的对象列表   swing我正在用Java中的keyListener制作一个精灵移动器   在Gradle构建脚本中使用Scala(或java)方法   java Android Mediaplayer下一步按钮不起作用   Java Sound API在播放音频文件后将其锁定   java将变量从外部类传递到内部类的最佳方法   使用play framework的博客web应用程序出现java逻辑错误   java我们可以在Spring批处理中处理大型zip文件吗?   java如何检查JTable的选定行的特定列中的值是否已经在JList中?