2017-03-06 7 views
0

사용자 정의 방식으로 로그를 인쇄하고 싶습니다.log4j2 JSON 기법을 사용하여 Java 응용 프로그램의 로그 파일에 사용자 정의 필드를 인쇄하는 방법은 무엇입니까?

현재 우리가 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에-웹 유물을 포함 할 것 -

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

또한 유용한 [extended-jsonlayout]을 만든 아티팩트를 발견 할 수 있습니다. 간단한 인터페이스를 구현하고 classpath에 jar 파일을 추가하여 json 로그 메시지에 추가 정보를 추가 할 수 있습니다. 여기에서 확인할 수 있습니다. -
https://github.com/savantly-net/log4j2-extended-jsonlayout