如何指示 EventLogTraceListener 在特定 Log 中创建

Posted

技术标签:

【中文标题】如何指示 EventLogTraceListener 在特定 Log 中创建【英文标题】:How to direct the EventLogTraceListener to create in a specific Log 【发布时间】:2010-11-11 03:38:01 【问题描述】:

以下侦听器将在调用 Trace.WriteLine 时创建一个事件条目。如果源不存在,他将在默认日志通道“应用程序”中创建它。我想指定另一个默认日志通道,但搜索 45 分钟后,我似乎没有找到解决方案。有什么想法吗?

<configuration>   
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener"               
          type="System.Diagnostics.EventLogTraceListener"
          initializeData="Source">          
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

【问题讨论】:

【参考方案1】:

不确定是否可以通过配置。

尽管 EventLogTraceListener 确实接受不同的事件日志作为构造函数中的参数。不幸的是,该类是密封的,因此您不能简单地从它派生并为构造函数传递不同的值。

尽管您可以遵循这种方法并构建自己的类(看起来相当简单)。然后在您的配置中引用该类型。 http://weblogs.asp.net/psteele/archive/2006/02/23/438936.aspx

【讨论】:

【参考方案2】:

您可以在第一行代码中重新指向监听器。

Trace.Listeners["MyListener"].Attributes["EventLog"] = ConfigurationManager.AppSettings["MyCustomEventLogName"];

该值可以存储在配置文件的&lt;appSettings&gt; 部分,因此它仍然是基于配置的:

<appSettings>
    <add key="MyCustomEventLogName" value="CustomEventLogName" />
</appSettings>

【讨论】:

【参考方案3】:

我自己也遇到了这个问题,并找到了一个不需要自定义代码的解决方案 - 您可以通过 Powershell 预先创建“源”,这样您就可以设置要使用的日志。

    通过 Powershell 初始化源代码:
# Run as administrator

# ONLY If you previously ran the application and the source is already associated with the Application channel:
Remove-EventLog -Source MyCustomSource

# Create new log channel <-> source mapping
New-EventLog -LogName CustomLog -Source MyCustomSource

    如果您使用之前登录到“应用程序”的相同“源”,请重新启动计算机 - 更改将在重新启动之前应用。

    将诊断 XML 中的“源”与新创建的源匹配

<configuration>   
  <system.diagnostics>
    <trace autoflush="false" indentsize="4">
      <listeners>
        <add name="myListener"               
          type="System.Diagnostics.EventLogTraceListener"
          initializeData="MyCustomSource">          
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
</configuration>

【讨论】:

【参考方案4】:

您可以在这篇博文中找到解决方案:

http://weblogs.asp.net/psteele/438936

真的好用!

【讨论】:

您应该将重要部分放在您的答案帖子中,并添加链接作为参考。

以上是关于如何指示 EventLogTraceListener 在特定 Log 中创建的主要内容,如果未能解决你的问题,请参考以下文章

如何使用图像而不是活动指示器?

如何检测 iPhone X 主页指示灯?

如何在导航栏中设置活动指示器?

如何制作这个 Flutter Page 幻灯片指示器?

如何使用 jQuery 显示“忙碌”指示器?

如何更改当前光标位置指示器的颜色?