pattern examples ejemplos conversionpattern java json log4j

java - examples - ¿Log4j soporta el formato JSON?



log4j pattern examples (3)

Sí, es posible. Echa un vistazo a este enlace se puede generar.

{ "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" }

¿Es posible dejar que log4j genere su registro en formato JSON al solo modificar el archivo de configuración log4j.properties.xml ?
Hago uso de una aplicación antigua que usa log4j 1.2 . Solo veo el diseño XML pero no el diseño JSON.


este es el diseño oficial de JSON

https://github.com/logstash/log4j-jsonevent-layout

1) Agregar dependencia de maven 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) Agregue la configuración a su archivo log4j.properties

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


solo usa buildin PatternLayout está bien:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.encoding=UTF-8 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern={"debug_level":"%p","debug_timestamp":"%d{ISO8601}","debug_thread":"%t","debug_file":"%F", "debug_line":"%L","debug_message":"%m"}%n

se pondrá como:

{ "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" }