전체 엔터프라이즈 라이브러리 로깅 AB를 사용하지 않고 Enterprise Library 4.1 TraceListeners를 사용할 수 있습니까? .NET Diagnostics Tracing을 사용하는 것을 선호하지만 Error 이벤트에 대한 전자 메일을 보내는 수신기를 설치하려고합니다. 엔터프라이즈 라이브러리 EmailTraceListener를 사용할 수 있다고 생각했습니다. 그러나 초기 설정 시도가 실패했습니다.엔터프라이즈 라이브러리 TraceListeners의 경량 사용
<system.diagnostics>
<trace autoflush="false" />
<sources>
<source name="SampleSource" switchValue="Verbose" >
<listeners>
<add name="textFileListener" />
<add name="emailListener" />
</listeners>
</source>
</sources>
<sharedListeners>
<add name="textFileListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="..\trace.log" traceOutputOptions="DateTime">
<filter type="System.Diagnostics.EventTypeFilter" initializeData="Verbose" />
</add>
<add name="emailListener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EmailTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging" toAddress="[email protected]" fromAddress="[email protected]" smtpServer="mail.example.com" >
<filter type="System.Diagnostics.EventTypeFilter" initializeData="Verbose" />
</add>
</sharedListeners>
</system.diagnostics>
을 나는 .NET 내가 제공 한 속성 코드는 "비표준"설정에 대해 상관하지 않는다 추적 믿고 날 리드
[ArgumentException: The parameter 'address' cannot be an empty string.
Parameter name: address]
System.Net.Mail.MailAddress..ctor(String address, String displayName, Encoding displayNameEncoding) +1098157
System.Net.Mail.MailAddress..ctor(String address) +8
Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.EmailMessage.CreateMailMessage() +256
Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.EmailMessage.Send() +39
Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EmailTraceListener.Write(String message) +96
System.Diagnostics.TraceListener.WriteHeader(String source, TraceEventType eventType, Int32 id) +184
System.Diagnostics.TraceListener.TraceEvent(TraceEventCache eventCache, String source, TraceEventType eventType, Int32 id, String format, Object[] args) +63
System.Diagnostics.TraceSource.TraceEvent(TraceEventType eventType, Int32 id, String format, Object[] args) +198
System.Diagnostics.TraceSource.TraceInformation(String message) +14
를 얻을 그러나 : 여기 일하는 것이 기대거야 emailListener에 대한. 또한 적절한 LAB configSection 선언을 추가하려고 시도했습니다.
<loggingConfiguration>
<listeners>
<add toAddress="[email protected]" fromAddress="[email protected]" smtpServer="mail.example.com" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EmailTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging" name="emailListener" />
</listeners>
</loggingConfiguration>
이 경우에도 동일한 예외가 발생합니다. 프로그래밍 방식으로 EmailTraceListener를 구성 할 수 있다고 생각하지만이 방법은 구성 지향적 인 방법을 선호합니다. 또한 TraceListener 내 자신의 파생을 구현할 수 이해합니다.
Ent Lib LAB 전체를 사용하지 않고 Ent Lib TraceListeners를 사용하고 설정 파일에서 구성 할 수 있습니까?
업데이트 : 코드를 검토 한 결과, 가능하지 않음을 발견했습니다. Ent Lib TraceListeners는 .NET TraceListener 문서의 권장 사항에도 불구하고 실제로 TraceListener.GetSupportedAttributes()를 재정의 할 때 지정한 구성 속성을 활용하지 않습니다. 버그 신고.
가볍고 동일한 문장의 EntLib? ;-) –
하하. 그리고 그것은 불가능한 것을 요청하고 있었다. –