2012-06-25 1 views
5

내 질문은 this 질문에서 유래 한 의견 중 하나가 DEBUG 로그 수준이 TRACE보다 더 세밀하다는 것을 암시합니다. .NET에서 TRACE와 DEBUG이 의미하는 바를 살펴보면 정의상 DEBUG (개념으로서)는 프로덕션에서는 볼 수 없으므로 의미가있는 것처럼 보입니다. 이것은 아마도 엔터프라이즈 라이브러리에서 이벤트 유형으로 사용되지 않는 이유 일 것입니다. 반면에, 내가 아는 다른 모든 구현 (log4net, nlog, common.logging)은 TRACE가 DEBUG보다 더 미세한 레벨로 있습니다. 즉, DEBUG 로그 수준에서 실행되는 응용 프로그램은 TRACE 로그를 작성하지 않습니다.로그 수준 : DEBUG를 TRACE보다 미세하게 생각하십니까?

우리는 자체 로그 프레임 워크를 구현해야하며 DEBUG이 실제로 "스팸"로그 레벨이되어야한다고 생각하는 사람들이 더 있는지 궁금합니다. 또는 새로운 프레임 워크가 새로운 개발자들에게 사용하기 쉬운 친숙 함을 제공해야한다면 이것을 실수로 생각할 것입니까?

감사합니다.

답변

4

log4net은 Java 세계에서 온다는 것을 명심하십시오. NLog는 log4net에서 많은 아이디어를 취합니다. 따라서 .NET Framework 디자이너의 세계적인 로깅보기를 기반으로하지 않으므로 추적 및 디버그는 프레임 워크마다 다릅니다. System.Diagnostics 네임 스페이스에 있습니다.

디버그 정보를 표시하기 위해 TRACE 컴파일러 지시문이나 web.config를 통해 추적을 사용하도록 설정하면 .NET의 Trace가 .NET의 Debug와 동의어임을 제안합니다.

분명히 NLog와 Log4Net에서 정보의 심각도는 약간 다르게 해석 될 수 있지만 시스템 오류가 아니라 버그를 추적하는 용도로 사용되기 때문에 기본적으로 동일한 의미를 갖습니다.

+0

자신 만의 로깅 프레임 워크를 구현한다면 Verbose Entlib에서)? – Werner

+0

@Werner 예! .NET과 마찬가지로 정보, 오류, 경고. Java 기반의 추가 레벨은 비즈니스 또는 안전에 중요한 고 트랜잭션 시스템에 적합하지만 대부분의 사람들의 요구는 과도합니다. –

4

TRACE가 DEBUG보다 미세한 것에 동의합니다.

예 : 나는

if (Log.IsTraceEnabled) 
    Log.TraceFromat("Method {0} args {1}", method, string.Join(",", args)); 

입니다 : 내 응용 프로그램의 각 메서드 호출에 자동 로깅 문을 추가 PostSharp를 사용하는 경우,이 코드는 각 방법의 시작 부분에 주입 할 것 DEBUG는 개발자가 프로그램 의 동작을 디버그하는 데 도움이되는 정보를 쓰는 반면, "TRACE"는 응용 프로그램을 통해 호출을 추적하도록 도와줍니다. 그게 합당한 지 모르겠습니까?

+0

예. 실제로 대부분의 개발자는 이런 세상을보고 있습니다. 하지만 그건 우연히도 될 수 있습니다. 우리는 10 명의 개발자 중 8 명이 오해할만한 것을 생각하고 싶지 않습니다 :) – Werner