2009-06-18 8 views
1

디버깅에만 사용되는 데이터 집합을 수집하는 방법을 찾고 있습니다. 즉, 예외를 기록한 경우에만 데이터를 기록해야합니다. ILog.Error으로 예외 인수를 받으면 Fatal 또는 Debug으로 추가 정보를 기록하고 싶습니다. 예외가있는 다른 데이터를 로깅 할 때 추가 정보가 기록되지 않아야합니다.Log4net : 예외 상황에서만 로그 컨텍스트

데이터 집합을 작성하기 위해 GlobalContext 또는 ThreadContext를 사용할 계획입니다.

내 생각은 Log4Net에 연결하여 내가 상상할 수있는 이벤트에 첨부하여 컨텍스트를 포함하도록 메시지 패턴을 변경했지만 나에게 도움이되는 이벤트를 찾을 수 없습니다. 아마도 더 쉬운 방법이 있을까요?

전체적인 설계에 대해 어떻게 생각하십니까? 나는 옳은 길에 있었거나 나는 무엇인가 놓치고 있냐?

이렇게하면 어떻게 구현할 수 있습니까?

답변

1

패턴을 바꿔서 바꾼다고 생각하지 않습니다. 나는 필터 물건을 보는 것이 좋습니다. 따라서 MessagesWithExceptionOnly 필터를 사용하는 "ForMessagesWithExceptionsOnly"appender를 설정합니다. 이 appender는 예외가있는 메시지 만 처리합니다.

MessagesWithExceptionOnly 필터를 구현하려면 FilterSkeleton을보십시오.

+0

나는 그것을 얻지 못한다. 레이아웃 패턴이 다른 두 개의 appender (하나는 컨텍스트 속성을 인쇄하기위한 것이고 다른 하나는 메시지를 인쇄하기위한 것)를 만드시겠습니까? 두 개의 파일러를 만듭니다. 하나는 예외가있는 로깅 이벤트 만 허용하고 하나는 거부합니다. 그런 다음 해당하는 appender에 필터를 추가 하시겠습니까? 조금 성가신 것처럼 보입니다. – Karsten

+0

정확합니다. 필터 클래스를 두 개 만들 필요가 없다는 점을 제외하면 두 필터 모두에서 동일한 필터를 재사용 할 수 있으며 두 필터 클래스에서 반전 된 AcceptOnMatch 설정 만 사용할 수 있습니다. 좀 더 설정 아마도,하지만 훨씬 깨끗한 접근 방식. 런타임에 패턴을 수정하면 성능에 영향을 줄 수 있다고 생각합니다. –

관련 문제