2017-03-06 2 views
0

Je cherche à imprimer un journal d'une manière personnalisée.Comment imprimer des champs personnalisés dans un fichier journal à partir d'une application Java à l'aide de la technique JSON log4j2?

Par exemple,

actuellement nous avons la structure suivante du journal sous forme de JSON,

{ 
    "timeMillis" : 1488791217953, 
    "thread" : "restartedMain", 
    "level" : "DEBUG", 
    "loggerName" : "org.springframework.jdbc.datasource.DriverManagerDataSource", 
    "message" : "hello world", 
    "endOfBatch" : false, 
    "loggerFqcn" : "org.apache.commons.logging.impl.SLF4JLocationAwareLog", 
    "threadId" : 17, 
    "threadPriority" : 5 
} 

Maintenant, je trouve que, il y avait deux champs sont toujours portés disparus qui sont importants pour moi d'avoir dans un journal,

JSON attendu serait de même:

{ 
    "timeMillis" : 1488791217953, 
    "thread" : "restartedMain", 
    "level" : "DEBUG", 
    .................. 
    "file" : "p1.pck.HelloWorld.java", 
    "line" : "190", 
    "application-id" : "101", 
    "logged in user id " : "199", 
    "etc" : "etc" 
    .................. 
    "threadPriority" : 5 
} 

REMARQUE: le fichier de configuration du journal log4j2.yml a la suite de la configuration

JsonLayout: 
      propertiesAsList: true 

Répondre

0

Vous voulez inclure l'artefact log4j-Web pour obtenir des données de contexte dans votre journal -

<dependency> 
    <groupId>org.apache.logging.log4j</groupId> 
    <artifactId>log4j-web</artifactId> 
    <version>2.8.2</version> 
</dependency> 

En outre, vous pouvez trouver un artefact que j'ai créé utile [extended-jsonlayout]. Il vous permet d'ajouter des informations supplémentaires au message du journal json en implémentant une interface simple et en incluant le fichier jar sur votre chemin de classe. Vous pouvez le vérifier ici -
https://github.com/savantly-net/log4j2-extended-jsonlayout