是否可以将企业库设置为仅针对某些类型的事件发送警报电子邮件,其中“事件类型”可以更改而无需重新编译整个程序或必须编辑.config文件?
在完美的世界中,我可以在SQL Server中切换设置,说“默认情况下,发送电子邮件至a@example.com。对于符合特定条件的来源,请发送电子邮件给b @ example。 com。并且,对于其他一些标准,请发送电子邮件至c@example.com“。
更一般地说,我正在寻找一个日志框架,让我说“对于消息来源1 2和3,如果有什么东西会死,但是对于#4,只发送电子邮件给1个人”。源是由应用程序处理的每个文件中的一个数字设置的(尽管我计划进行设置,以便1个线程仅适用于1个源,因此也是一个选项)。
我看到Nlog和Log4Net也很受欢迎,但我还没有深入研究它们。
答案 0 :(得分:0)
您需要添加电子邮件监听器email trace listener。以下是来自企业库3.1
的示例 <add toAddress="to@mail.com" fromAddress="from@mail.com"
subjectLineStarter="Load" subjectLineEnder="" smtpServer="mailserver.com"
smtpPort="25" formatter="Text Formatter" listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.EmailTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
traceOutputOptions="None" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.EmailTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
name="Email TraceListener" />
然后你需要添加specialsources
<specialSources>
<allEvents switchValue="All" name="All Events">
<listeners>
<add name="Email TraceListener" />
</listeners>
</allEvents>
<notProcessed switchValue="All" name="Unprocessed Category" />
<errors switchValue="All" name="Logging Errors & Warnings" />
</specialSources>