추적 및 로깅에 대해 많이 읽었으며 문제의 모범 사례에 대한 황금률을 찾으려고 노력했지만 아무것도 없습니다. 사람들은 좋은 프로그래머가 좋은 추적을한다고하지만, 그렇게하면 경험에서 비롯되어야합니다.
나는 또한 여기와 인터넷을 통해 비슷한 질문을 읽었으며 그것들은 실제로 내가 요구하는 것과 똑같은 것이 아니며 아마도 대답이 만족스럽지 않을 수도 있습니다.
따라서 사람들은 디버거를 연결할 수없는 경우 추적이 응용 프로그램 디버깅 경험을 복제해야한다고 말합니다. 응용 프로그램의 각 제어 지점에서 어떤 경로가 사용되는지 확인할 수 있도록 충분한 컨텍스트를 제공해야합니다.
더 깊이 들어가면 "이벤트 로깅이 세부적인 제어 흐름이 아니라 주요 상태를 캡처한다는 점에서 이벤트 로깅이 추적과 다르다"는 점에서 추적과 이벤트 로깅을 구분할 수도 있습니다.
이제 System.Diagnostics
네임 스페이스 에있는 표준 .NET 클래스 만 사용하여 추적 및 로깅을 수행하려고합니다 . TraceSource 클래스는 정적 Trace 클래스보다 작업에 더 좋습니다. Trace 수준을 구별하고 TraceSource 클래스를 사용하려면 Trace 클래스를 사용하는 동안 이벤트 유형을 알려주는 매개 변수를 전달할 수 있기 때문에 사용해야합니다. Trace.WriteLineIf
다음과 같은 것들을 확인 SourceSwitch.TraceInformation
등을 SourceSwitch.TraceErrors
, 그것도 같은 속성이없는 TraceVerbose
또는 TraceStart
.
이 모든 것을 염두에두고 다음과 같이하는 것이 좋습니다.
- 메소드를 시작할 때 메소드에 전달 된 매개 변수 값의 문자열 표시와 함께 단일 논리 조작 또는 파이프 라인을 나타내야하는 "시작"이벤트를 추적하십시오.
- 데이터베이스에 항목을 삽입 할 때 "정보"이벤트를 추적하십시오.
- 중요한 if / else 문에서 한 경로 또는 다른 경로를 취할 때 "정보"이벤트를 추적하십시오.
- 복구 가능한 오류인지 여부에 따라 catch 블록에서 "Critical"또는 "Error"를 추적하십시오.
- 메소드 실행이 완료되면 "중지"이벤트를 추적하십시오.
또한 Verbose 및 Warning 이벤트 유형을 추적하는 것이 가장 좋은시기를 명확히하십시오. 멋진 추적 / 로깅을 가진 코드의 예가 있고 공유 할 의향이 있다면, 그것은 우수 할 것입니다.
참고 : 여기에 좋은 정보가 있지만 여전히 찾고있는 정보는 없습니다 : http://msdn.microsoft.com/en-us/magazine/ff714589.aspx