code

사용할 로그 수준을 결정하는 방법은 무엇입니까?

codestyles 2020. 12. 15. 19:19
반응형

사용할 로그 수준을 결정하는 방법은 무엇입니까?


로그 수준 WARN, ERROR 및 FATAL은 매우 명확합니다. 하지만 언제 뭔가 DEBUG이고 언제 정보입니까?

INFO 수준에서 성가 시게 장황한 일부 프로젝트를 보았지만 DEBUG 수준을 너무 선호하는 코드도 보았습니다. 두 경우 모두 유용한 정보가 노이즈에 숨겨져 있습니다.

로그 수준을 결정하는 기준은 무엇입니까?


엄격하고 빠른 규칙은 없다고 생각합니다. log4j 유형 수준을 사용하면 내 '경험의 법칙'은 다음과 같습니다.

  • 치명적 : 앱 (또는 최소한 스레드)이 끔찍하게 죽을 것입니다. 이것이 일어나는지 설명하는 정보가있는 곳 입니다.
  • ERROR : 앱이하지 말아야하는 작업입니다. 이것은 사용자 오류가 아닙니다 ( '잘못된 검색어'). 어설 션 실패, 네트워크 문제 등, 아마도 현재 작업을 중단 할 것입니다.
  • 경고 : 관련이 있지만 작업을 중단하지 않는 것입니다. DB 풀의 연결 수가 낮아지고 작업에서 비정상적이지만 예상되는 시간 초과 등이 발생합니다. 저는 종종 'WARN'을 종합적으로 유용한 것으로 생각합니다. 예를 들어 grep, 그룹화 및 계산하여 시스템 상태에 영향을 미치는 요소를 파악합니다.
  • INFO : 앱의 정상적인 작동의 일부인 정상적인 로깅입니다. 다시 돌아가서 '이 광범위한 작업이 얼마나 자주 발생 했습니까?'또는 '사용자의 데이터가이 상태가 된 방법'이라고 말할 수 있습니다.
  • DEBUG : 기본적으로 꺼져 있으며 예기치 않은 특정 문제를 디버깅하기 위해 켤 수 있습니다. 여기에서 주요 메소드 매개 변수에 대한 자세한 정보 또는 코드의 특정 '문제가있는'영역에서 발생할 수있는 문제를 찾는 데 유용한 기타 정보를 기록 할 수 있습니다.
  • TRACE : "진지하게, WTF가 여기에서 진행 중입니까?!?! 내가 미쳐 가기 전에이 @ # $ @ ing 메모리 손상 버그를 찾기 위해 실행하는 모든 단일 명령문을 기록해야합니다."

돌에 설정되어 있지 않지만 내가 어떻게 생각하는지 대략적인 아이디어.


비공식적으로 저는 이런 종류의 계층을 사용합니다.

  • DEBUG-실제 추적 값
  • 정보-문제가 발생했습니다. 중요한 것은 없습니다. 플래그 만 있습니다.
  • 경고-모든 것이 작동하지만 무언가가 예상 한 것과 다릅니다.
  • 오류-수정해야 할 일이 발생했지만 다른 (독립적 인) 활동을 수행하고 수행 할 수 있습니다.
  • 치명적-우리가 계속해서도 안되는 심각한 문제

일반적으로 INFO가 기록 된 상태로 릴리스되지만 로그 파일이 실제로 검토되고 크기가 문제가되지 않는다는 것을 알고있는 경우에만 그렇지 않으면 WARN입니다.


누가 각 레벨을 사용해야하는지 생각해보십시오. 내 코드에서 나는 개발자 출력, 예를 들어 개발자에게만 도움이되는 출력을 위해 DEBUG를 예약합니다. VERBOSE 는 많은 정보가 필요할 때 일반 사용자에게 사용됩니다. INFO 일반적으로 주요 이벤트를 표시하는 데 사용합니다 (예 : 웹 페이지 보내기, 중요한 항목 확인).

그리고 FAILWARN 은 매우 자명합니다.


우리 팀의 관례 debug는 메시지에서 무언가가 계산되는 경우 사용 하는 반면 info일반 텍스트에는 사용됩니다. 그래서 실제로 info무슨 일이 일어나고 있는지 debug보여주고 일어나고있는 일 의 가치를 보여줄 것입니다.


나는 사용자에게 INFO를 대상으로 경고도 아닌 메시지를 제공하는 경향이 있습니다. DEBUG는 코드를 통한 흐름을 추적하는 데 도움이되는 메시지를 출력하는 개발자 용으로 사용되는 경향이 있습니다 (변수 값 포함).

또한 모든 버퍼의 16 진 덤프와 같은 디버그 정보의 절대 버킷로드를 제공하는 또 다른 수준의 DEBUG (DEBUG2?)를 좋아합니다.


DEBUG2 수준이 필요하지 않습니다. 그것이 바로 'TRACE'의 목적입니다. TRACE는보고자 할 수있는 모든 가능한 정보를 출력하는 가장 낮은 수준의 로깅을위한 것입니다.

정보의 폭주를 방지하기 위해 일반적으로 전체 프로젝트에서 추적 수준 로깅을 사용하는 것은 권장되지 않습니다. 대신 'DEBUG'를 사용하여 버그에 대한 일반적인 정보와 발생 위치 (따라서 이름)를 찾은 다음 여전히 파악할 수없는 경우 해당 구성 요소에 대해서만 TRACE를 활성화합니다.

참조 URL : https://stackoverflow.com/questions/186798/how-to-determine-what-log-level-to-use

반응형