记录到JSON

Joh*_*gan 8 java logging slf4j

我想知道是否有一个slf4j的实现登录到JSON格式.每个日志消息都是JSON对象,每行1个.

例如,日志文件的每一行看起来像这样:

{"severity":"WARN", "ts":12345678, "host":"myhostname.com", "message":"Failed to do something"}
Run Code Online (Sandbox Code Playgroud)

yur*_*s87 5

好的,这个线程需要更新一下,因为大多数答案都很旧。所有现代 Java 日志库都支持开箱即用的 json 布局。使用 log4j2,您甚至不需要任何额外的库,只需要类路径中的 jackson,您很可能已经拥有了。

当然,您确实需要使用 json 布局并明确指定它。请参阅此处的 log4j2 示例。请注意,对于您选择的日志收集器,默认布局可能无法按预期工作。例如,我使用 FileBeat,它要求每行生成一个日志。Log4j2 有一个参数元组:

与 eventEol=true 和 compact=true 一起使用可获取每行一条记录。

我的附加程序如下所示:

<Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
        <ThresholdFilter level="ERROR" onMatch="DENY" onMismatch="ACCEPT"/>
        <JsonLayout complete="false" compact="true" eventEol="true"/>
    </Console>
    <Console name="STDERR" target="SYSTEM_ERR">
        <ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
        <JsonLayout complete="false" compact="true" eventEol="true"/>
    </Console>
</Appenders>
Run Code Online (Sandbox Code Playgroud)

如果这还不够,你还可以看看这个 repo:https : //github.com/savoirtech/slf4j-json-logger


Waq*_*qas 2

我想这就是您正在寻找的: http://jsontools.berlios.de/articles/faq/what-is-in-log4j.html

我以前没有使用过这个,但在我提到的页面上说:

它包含一个格式化程序,用于将日志条目格式化为 JSON 格式。您可以将其安装在日志系统中,然后使用核心工具解析日志流。