Does log4j support JSON format?
this is official JSON layout
https://github.com/logstash/log4j-jsonevent-layout
1) Add maven dependency https://mvnrepository.com/artifact/net.logstash.log4j/jsonevent-layout
<dependency> <groupId>net.logstash.log4j</groupId> <artifactId>jsonevent-layout</artifactId> <version>1.7</version> </dependency>
2) Add configuration to your log4j.properties
file
log4j.rootCategory=WARN, RollingLog log4j.appender.RollingLog=org.apache.log4j.DailyRollingFileAppender log4j.appender.RollingLog.Threshold=TRACE log4j.appender.RollingLog.File=api.log log4j.appender.RollingLog.DatePattern=.yyyy-MM-dd log4j.appender.RollingLog.layout=net.logstash.log4j.JSONEventLayoutV1
just use buildin PatternLayout is ok:
log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.encoding=UTF-8log4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern={"debug_level":"%p","debug_timestamp":"%d{ISO8601}","debug_thread":"%t","debug_file":"%F", "debug_line":"%L","debug_message":"%m"}%n
will out put like:
{ "debug_level" : "INFO", "debug_timestamp" : "2016-05-26 16:37:08,938", "debug_thread" : "main", "debug_file" : "TestLogOutPut.java", "debug_line" : "316", "debug_message" : "hello i am a log message"}
Yes It is possible.Take a look at this linkIt can generate
{ "timestamp":1352412458890, "date":"Nov 8, 2012 10:07:38 PM", "hostname":"michael1", "username":"michael", "level":"INFO", "thread":"main", "classname":"uk.me.mjt.log4jjson.SimpleJsonLayoutTest", "filename":"SimpleJsonLayoutTest.java", "linenumber":25, "methodname":"testDemonstration", "message":"Example of some logging" }