您需要创建EmailTraceListener,然后将其添加到您的类别的TraceSources集合中。
在这个例子中,我有一个基本跟踪监听器指向一个平面文件。
<add fileName="trace.log" header="----------------------------------------"
footer="----------------------------------------" formatter="Text Formatter"
listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.FlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
traceOutputOptions="None" filter="All" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
name="FlatFile TraceListener" />
与类别源,如下所示:
<categorySources>
<add switchValue="All" name="General">
<listeners>
<add name="FlatFile TraceListener" />
</listeners>
</add>
</categorySources>
然后使用代码我能够到EmailTraceListener添加到收藏TraceSources。
var emailTraceListener = new EmailTraceListener("[email protected]", "[email protected]", "Food", "Bar",
"smtp.foo.bar") {Name = "EmailTraceListener"};
LogSource logSource;
Logger.Writer.TraceSources.TryGetValue("General", out logSource);
logSource.Listeners.Add(emailTraceListener);
var logEntry = new LogEntry {Message = "Test"};
Logger.Write(logEntry);
运行这个例子中,然后将生产与LogEntry信息的电子邮件,以及在日志文件trace.log的一个条目
完美的,正是我所期待的。谢谢 – 2009-11-20 20:10:07
因此,添加监听器只会在运行时添加它们,对吧?对于ASP.NET Web应用程序,它是否适用于每个用户会话的整个持续时间? – 2013-12-17 15:59:08