2014-04-29 5 views
2

저는 두 개의 라이브러리를 운송 중이며 TraceSource를 사용하여 일부 추적 기능을 구현하려고합니다. 또한 사용자가 자신의 리스너, 스위치, 필터 등을 부착/구성 할 수 있도록하고 싶습니다.C# 라이브러리에 대한 TraceSource 로깅 구성 정의

라이브러리에는 설정 파일이 포함되어 있지 않으므로 라이브러리는 설정 파일과 함께 제공되지 않으므로이를 깔끔하게 수행 할 수있는 패턴이 있습니까?

나는 다음과 같은 것을 생각 해왔다. 라이브러리와 함께 제공되는 logging.config 파일과 내 라이브러리가 사용하지만 청취자를 포함하지 않는 소스를 보여줘야한다. 다음으로, 내 라이브러리에서 사용자의 logging.config와 app.config에서 모두 읽은 다음 app.config 파일에 정의 된 모든 수신기로 logging.config를 재정의합니다. OK 패턴처럼 들리니?

답변

0

app.config (또는 web.config)의 System.Diagnostic 섹션에서 외부 파일을 가리킬 수 있습니다.

<system.diagnostics configSource="system.diagnostics.config" /> 

은 지금까지 내가 아는 한, System.Diagnostics 네임은 한 System.Diagnostics 네임 섹션 허용하도록 설정되어 있으며, 통합되지이있다. 임시 로깅 시스템에서는 가능할 수 있습니다. (TraceSource 태그가 있기 때문에 System.Diagnostic의 추적 라이브러리에 대한 것입니다.)

다른 수신기 시나리오 (아마도 미리 구성된 섹션 일 수도 있습니다. 콘솔 추적 또는 파일 추적) 사용자는 app.config에 configSource를 추가하여 일반적인 상황을 추적하여 특정 문제를 처리하기 위해 일시적으로 추적을 추가하면됩니다.

도서관 소비자는 제 3 자 라이브러리의 흔적을보고 싶어 질 정도로 정교하며 자신의 system.dignostics 섹션을 적절히 구성 할 수도 있습니다. 설명서를 통해 (사용자 설명서를 통해) 사용자에게 알릴 수 있어야합니다. System.Diagnostics를 사용하고 TraceSource na mes가 있습니다.

예를 들어, .NET Framework는 몇 가지 네임 스페이스 (System.ServiceModel 및 System.Networking)에서 TraceSource를 사용하지만 디 컴파일러를 실행하지 않으면 이러한 추적이 존재하고 라이브러리 사용자가 활성화 할 수 있음을 알지 못할 수도 있습니다. 즉, 라이브러리의 System.Diagnostic 추적에는 발견 가능성 문제가 있습니다.