형식화된 메시지, 개체 배열, 예외를 기록하는 방법
입력된 메시지와 예외 스택 추적을 모두 기록하는 올바른 방법은 무엇인가?
logger.error(
"\ncontext info one two three: {} {} {}\n",
new Object[] {"1", "2", "3"},
new Exception("something went wrong"));
다음과 유사한 출력을 생성하고자 함:
context info one two three: 1 2 3
java.lang.Exception: something went wrong
stacktrace 0
stacktrace 1
stacktrace ...
나의 SLF4J 버전은 1.6.1이다.
SLF4J 1.6.0을 기준으로 다중 파라미터가 있고 로깅 문장의 마지막 인수가 예외인 경우, SLF4J는 사용자가 마지막 인수를 단순한 파라미터가 아닌 예외로 취급하기를 원한다고 가정할 것이다.관련 FAQ 항목도 참조하십시오.
따라서 쓰기(SLF4J 버전 1.7.x 이상)
logger.error("one two three: {} {} {}", "a", "b",
"c", new Exception("something went wrong"));
또는 쓰기(SLF4J 버전 1.6.x)
logger.error("one two three: {} {} {}", new Object[] {"a", "b",
"c", new Exception("something went wrong")});
굴복할 것이다
one two three: a b c
java.lang.Exception: something went wrong
at Example.main(Example.java:13)
at java.lang.reflect.Method.invoke(Method.java:597)
at ...
정확한 출력은 기본 프레임워크(예: logback, log4j 등)뿐만 아니라 기본 프레임워크를 구성하는 방법에 따라 달라질 것이다.그러나 마지막 파라미터가 예외인 경우에는 기본 프레임워크와 무관하게 해석된다.
@Ceki의 대답 외에도 logback을 사용하고 프로젝트에서 구성 파일(일반적으로 logback.xml)을 설정하는 경우 로그를 정의하여 스택 추적도 표시할 수 있다.
<encoder>
<pattern>%date |%-5level| [%thread] [%file:%line] - %msg%n%ex{full}</pattern>
</encoder>
%ex 패턴이 차이를 만드는 것이다.
받아들여진 답은 대단하다.나는 단지 여기에 지금 작동하고 있는 나의 사례를 덧붙이고 있는데, 그것은 답변에 감사한다.이것은 다른 누군가에게 도움이 될지도 모른다.
사용하고 있다.SLF4J
그리고logback
JSON 인코더와 함께.게다가, 나는 사용한다.marker
그리고arguments
내 생산량을 늘리기 위해
logger.error(getMarker("errorEvent"),
"An error occurred",
entries(mapOf("someKey" to "someValue")),
new Exception())
출력:
{"레벨": "에러","이벤트": "오류이벤트""이벤트 데이터": {"썸키": "썸밸류"},"스택트레이스": "...스택스...","메시지": "오류 발생"}
물론 의 구성이 많다.logstash
막후에서, 그러나 나는 단지 그 사실을 보여주고 싶었다.arguments
로서 전래된.entries
구성된 대로 표시됨eventData
꼬리표를 달다
참조URL: https://stackoverflow.com/questions/6371638/how-to-log-formatted-message-object-array-exception
'programing' 카테고리의 다른 글
여러 아키텍처에 최적화된 NDK 코드를 생성하시겠습니까? (0) | 2022.04.21 |
---|---|
왜 거꾸로 쓰여진 이 코드가 "Hello World!"를 인쇄하는가? (0) | 2022.04.21 |
왜 우리는 국가 관리를 위해 돌연변이, 세터, 게이터가 필요한가? (0) | 2022.04.21 |
사용자 지정 구성 요소에 사용할 경우 v-model과 .sync의 차이점 (0) | 2022.04.21 |
VueJS 웹 앱에서 Google Maps API 사용 안 함 오류: utc_offset은 2019년 11월 현재 사용되지 않으며 2020년 11월에 실행 중지됨 (0) | 2022.04.20 |