企业库5日志记录块:如何写入事件查看器?

时间:2011-09-22 18:18:41

标签: logging enterprise-library enterprise-library-5

我正在使用Enterprise Library 5中的Logging Application Block尝试登录平面文件和事件日志。我的配置如下所示:

enter image description here

我正在使用此代码写入日志:

Logger.Write("message", "General1");
Logger.Write("message", "General2");

问题是,我得到平面文件记录正常,但事件日志从不显示日志条目。我已经制作了一个自定义视图来过滤“Enterprise Library Logging”。

如何使用Ent lib 5在事件查看器日志中生成条目?

感谢。

聚甲醛

2 个答案:

答案 0 :(得分:3)

我认为这里可能会发生两件事:

  1. 日志记录正常,但您的自定义过滤器不正确
  2. 记录无法正常工作
  3. 让我们保持乐观并假设记录正在发挥作用。

    记录正在运行

    您已将EventLogTraceListener配置为记录到名为MyLog的事件日志,其源代码为“Enterprise Library Logging”。也许自定义过滤器配置为按日志过滤而不是搜索MyLog?仔细检查您的过滤器,并检查在名为MyLog的应用程序和服务日志下是否存在实际日志。

    如果我猜测,那可能不是问题。

    记录不起作用

    我们假设日志记录不起作用。它无法工作的最可能原因是您无权创建事件日志。 我还注意到了Logging Errors&警告部分未配置侦听器。设置记录错误和放大器总是一个好主意。警告使用跟踪侦听器(我更喜欢平面文件跟踪侦听器,因为它是最简单的一个,所以可能出错)。
    因此,在您的情况下,我会将其设置为使用您已设置的“平面文件跟踪侦听器”:

     <specialSources>
       <allEvents switchValue="All" name="All Events" />
       <notProcessed switchValue="All" name="Unprocessed Category" />
       <errors switchValue="All" name="Logging Errors &amp; Warnings">
        <listeners>
         <add name="Flat File Trace Listener" />
        </listeners>
       </errors>
      </specialSources>
    

    现在,如果您重新运行程序,您可能会在consoletrace.log中看到错误消息。

    如果权限是问题,通常的解决方案是在安装期间使用具有适当权限的帐户创建事件日志及其来源。例如。以管理员身份记录消息以设置日志和类别。

答案 1 :(得分:0)

我现在知道这是一个较旧的问题,但为了使用事件日志,必须首先创建事件源(由具有管理权限的用户创建)。此外,如果您尝试在网站中使用此功能,则必须授予NETWORK SERVICE帐户访问以写入事件日志的权限。该网站将提供帮助:http://msdn.microsoft.com/en-us/library/ms998320.aspx