
log4j
로깅 메시지의 형식을 지정하는 데 사용하는 개발자가 만든 내부 Java 애플리케이션이 있습니다 . 최근 우리는 Google Kubernetes Engine에서 이를 실행하기 시작했으며 로그는 자동으로 stdout에서 Stackdriver로 파이프됩니다. 그러나 모든 로그는 심각도 수준으로 표시됩니다 INFO
. 그러한 메시지 중 하나에는 다음과 같이 시작하는 textPayload가 있습니다.
18 Jul 2019 10:11:32.334 [ERROR] [req=api-test--870259294-18071111-11 sess=cwfscqttcfqh1acsictx3toxv reqMs=4]
이것이 심각도 메시지라는 것은 개발자의 의도가 분명 ERROR
하지만 Stackdriver를 염두에 두고 애플리케이션을 구축하지 않았기 때문에 구조화되지 않았으며 심각도로 보고되었습니다 INFO
.
우리가 사용하는 중앙 집중식 로깅을 존중하기 위해 애플리케이션을 변경해야 한다는 것은 잘못된 것 같습니다. 고객은 다른 로깅 솔루션을 사용할 수도 있습니다. 심각도를 확인하기 위해 Stackdriver에서 textPayload를 사용하도록 할 수 있는 방법이 있나요? 저는 Google Kubernetes Engine에서 실행 중이므로 로깅 인프라를 설정하지 않았으며 Google에서 제공하는 것 이상으로 이에 대한 액세스 권한이 없습니다.
Google Cloud Platform의 Error Reporting은 오류 메시지 추적을 위한 강력한 도구이지만 심각도 이상의 로그에만 올바르게 적용되기 때문에 이러한 변경에 관심이 있습니다 ERROR
. 단순히 Stackdriver의 로그에 대한 측정항목을 생성하는 것만으로는 원하는 대로 제어할 수 없습니다.
답변1
빠른 대답은 아니요입니다. 코드를 변경하고 각 메시지에 대해 올바른 심각도로 적절한 로깅을 구현해야 합니다. 일반적으로 Stackdriver 로그를 BigQuery로 내보낸 다음 더 복잡한 쿼리를 실행할 수 있습니다.
여기에서 유용한 링크를 찾을 수 있습니다: