2017-03-06 54 views
0

我找打印出日誌中的自定義方式。如何打印自定義字段爲從Java應用程序日誌文件與log4j2 JSON技術的幫助?

例如,

目前,我們有以下的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 
} 

現在我發現,有幾個字段仍然失蹤這是很重要我有一個日誌,

預期JSON是同樣:

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

注:日誌配置文件log4j2.yml有以下配置

JsonLayout: 
      propertiesAsList: true 

回答

0

您將要包括的log4j的Web神器讓你的日誌上下文數據 -

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

此外,你可能會發現我創建了一個假象有用[擴展jsonlayout。它可以讓你通過一個簡單的界面,並且包括在classpath的jar附加信息添加到JSON日誌消息。你可以在這裏查看 -
https://github.com/savantly-net/log4j2-extended-jsonlayout