Log4j2와 해당 JSONLayout
을 사용하여 JSON 형식의 로그를 생성합니다. 모든 것이 잘 작동하지만, 내가 좋아하는 Logger.warn(String message, Throwable t)
사용할 때 :Log4j2 JSON 레이아웃 : " n"(개행 문자) 처리
l4j2Logger.warn("log1...\n...log2", new Exception("ex1...\n...ex2"));
내 로그에 얻을 다음 message
키에서
"message":"log1...\n...log2",
"throwable":"java.lang.Exception: ex1...\\n...ex2\\n\tat test.Test.log(Test.java:73)\\n\tat......"
에서, \n
문자가 로그 파일에 \n
기록,
하지만, throwable
키에서 \n
문자는 로그 파일에 \\n
으로 기록됩니다.
이러한 로그를 구문 분석해야하므로 JSON 파서는 JSON specifications이 \n
이 사용되어야한다는 것을 나타 내기 때문에 정상적인 것처럼 보이는 \\n
을 좋아하지 않습니다. 여기
<Appenders>
<File name="FileAppender" fileName="log4j2.log" append="true">
<JSONLayout complete="true" compact="false"/>
</File>
</Appenders>
이 Log4j2이
throwable
에
\\n
을 사용하는 이유를 알고 있습니까, 그리고 경우/I는 어떻게 변경할 수 있습니까? (현재 Log4j-2.0-RC1을 사용하고 있습니다.)
실제로 \\ n은 '\ n'으로 구문 분석됩니다. JSON 구문 분석기의 명목상의 동작입니다. 그러나 요점은 log4j2가'message' 필드처럼'\ n' 대신'\\ n'을 사용하는 이유입니까? 예상되는 로그 파일은'message'와'throwable' 필드 모두에 새로운 줄 문자를 만들어야합니다 ... 그렇지 않으면'throwable '의 스택 추적을 완전히 읽을 수 없습니다 – xav
http : //www.json으로 이것을 분석하려고했습니다. org/java/index.html과 새로운 라인은'message' 필드에는 출력되지만'throwable' 필드에는 출력되지 않습니다 ('\ n' 문자열 만) – xav