企业库记录和警报电子邮件

时间:2014-02-20 00:25:28

标签: .net logging enterprise-library

是否可以将企业库设置为仅针对某些类型的事件发送警报电子邮件,其中“事件类型”可以更改而无需重新编译整个程序或必须编辑.config文件?

在完美的世界中,我可以在SQL Server中切换设置,说“默认情况下,发送电子邮件至a@example.com。对于符合特定条件的来源,请发送电子邮件给b @ example。 com。并且,对于其他一些标准,请发送电子邮件至c@example.com“。

更一般地说,我正在寻找一个日志框架,让我说“对于消息来源1 2和3,如果有什么东西会死,但是对于#4,只发送电子邮件给1个人”。源是由应用程序处理的每个文件中的一个数字设置的(尽管我计划进行设置,以便1个线程仅适用于1个源,因此也是一个选项)。

我看到Nlog和Log4Net也很受欢迎,但我还没有深入研究它们。

1 个答案:

答案 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 &amp; Warnings" />
</specialSources>