web-dev-qa-db-fra.com

Log4j prend-il en charge le format JSON?

Est-il possible de laisser log4j sortir sa journalisation au format JSON en modifiant uniquement le log4j.properties.xml fichier de configuration?
J'utilise une ancienne application qui utilise log4j 1.2. Je ne vois que la disposition XML mais pas de disposition JSON.

23
Stefan

il suffit d'utiliser buildin PatternLayout est ok:

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

sera mis comme:

{
    "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"
}
20
chad chen

c'est la mise en page JSON officielle

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

1) Ajouter une dépendance 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) Ajoutez une configuration à votre log4j.properties fichier

 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
33
Karpov S.Y.

Oui c'est possible. Jetez un oeil à ce lien Il peut générer

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