我想知道是否有一個實現slf4j登錄到JSON格式。每個日誌消息將是一個JSON對象,每行1個。記錄到JSON
例如日誌文件的每一行看起來象是這樣的:
{"severity":"WARN", "ts":12345678, "host":"myhostname.com", "message":"Failed to do something"}
我想知道是否有一個實現slf4j登錄到JSON格式。每個日誌消息將是一個JSON對象,每行1個。記錄到JSON
例如日誌文件的每一行看起來象是這樣的:
{"severity":"WARN", "ts":12345678, "host":"myhostname.com", "message":"Failed to do something"}
我想這是你在找什麼: http://jsontools.berlios.de/articles/faq/what-is-in-log4j.html
我沒有使用過這之前,但我提到的網頁上說:
它包含格式化程序,用於格式化JSON格式的日誌條目。您可以將其安裝到日誌系統中,然後使用核心工具解析日誌 流。
前段時間I wrote一個MongoDBAppender
爲Logback(見LBCLASSIC-261)。顧名思義,它使用MongoDB的存儲記錄事件,但因爲MongoDB的方便類JSON文檔存儲,你可能會發現它有用:
{
"_id" : ObjectId("4d9cbcbf7abb3abdaf9679cd"),
"timeStamp" : ISODate("2011-04-06T19:19:27.006Z"),
"level" : "ERROR",
"thread" : "main",
"logger" : "ch.qos.logback.classic.db.mongo.MongoDBAppenderTest",
"message" : "D"
}
如果您正在使用的Log4j作爲後端:
如果你正在使用JUL(java.util.logging中)作爲後端:
注意,他們都格式的單個日誌事件爲JSON對象。沒有創建有效的JSON數組。
如果您使用Logback作爲後端,請查看logstash-logback-encoder。它包含編碼器以登錄json格式。
你可以把它作爲一個Maven依賴性:
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>4.4</version>
</dependency>
而在你logback.xml配置文件,包括編碼器。與LogstashEncoder使用RollingFileAppender進行例如下文提到的(源 - logstash-logback-encoder#encoder):
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="stash" class="ch.qos.logback.core.rolling.RollingFileAppender">
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>info</level>
</filter>
<file>/some/path/to/your/file.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>/some/path/to/your/file.log.%d{yyyy-MM-dd}</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="net.logstash.logback.encoder.LogstashEncoder" />
</appender>
<root level="all">
<appender-ref ref="stash" />
</root>
</configuration>
我用Log4j2和我也有類似的要求。這幫助我 -
https://github.com/maartenbosteels/log4j-jsonevent-layout
log4j2。XML:
<Console name="Console" target="SYSTEM_OUT">
<JSONEventLayoutV1>
</Console>
我有以下執行添加到我的Maven的編譯器插件生成插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<executions>
<execution>
<id>log4j-plugin-processor</id>
<goals>
<goal>compile</goal>
</goals>
<phase>process-classes</phase>
<configuration>
<proc>only</proc>
<annotationProcessors>
<annotationProcessor>org.apache.logging.log4j.core.config.plugins.processor.PluginProcessor</annotationProcessor>
</annotationProcessors>
</configuration>
</execution>
</executions>
</plugin>
好吧,這個線程需要更新了一下,因爲大部分的答案是相當舊。所有現代化的java日誌庫都支持json佈局。有了log4j2,你甚至不需要任何額外的庫,只需要在你的類路徑中的傑克遜,你最有可能已經有了。
如果這還不夠,你也可以看看這個回購:https://github.com/savoirtech/slf4j-json-logger
該網址無法解析了,但事情仍然可見在github https://github.com/bfrancojr/Java- JSON-工具 – cheffe 2015-04-07 11:05:35