使用InstallNlogConfig安装Nlog配置到Eventlog

本文关键字:Eventlog 配置 Nlog InstallNlogConfig 安装 使用 | 更新日期: 2023-09-27 18:17:47

我试图用Nlog写一个日志到Eventlog,这是我的Nlog.config的一个例子

<target xsi:type="EventLog" 
    name="eventlog"
    layout="${message}"
    log="Application" 
    source="MyAppName"  />

当使用Administrator权限执行InstallNlogConfig时,显示此错误:

NLog。NLogConfigurationException:初始化错误EventLog Target[EventLog]—System.IO.IOException:网络路径未找到。

Microsoft.Win32.RegistryKey

。Win32ErrorStatic (Int32错误代码,字符串str) enMicrosoft.Win32.RegistryKey。OpenRemoteBaseKey (RegistryHive根键,字符串机器名称,注册视图视图)enSystem.Diagnostics.EventLog。getteventlogregkey(字符串机器,布尔值可写)System.Diagnostics.EventLog。FindSourceRegistration(字符串源,字符串机器名,Boolean只读,Boolean创建System.Diagnostics.EventLog._InternalLogNameFromSourceName(字符串源,字符串机器名称)System.Diagnostics.EventLog。LogNameFromSourceName(字符串源,字符串机器名称)NLog.Targets.EventLogTarget.InitializeTarget()在c:'NLogBuild'src'NLog'Targets'EventLogTarget.cs:líneaNLog.Targets.Target。Initialize(LoggingConfiguration configuration) enc: ' NLogBuild ' src ' NLog ' ' Target.cs目标:288年线。2013-06-1012:21:05.0708提示关闭日志…2013-06-10 12:21:05.0708信息记录器已关闭。

使用InstallNlogConfig安装Nlog配置到Eventlog

读取Nlog, Eventlog目标。

这篇文章http://berryware.wordpress.com/2009/11/06/nlog-and-windows-event-log-bug/更详细地解释了发生了什么我没有定义machineName。毕竟,文档说明了machineName默认为本地机器,那么为什么要将其设置为任何东西呢?因为如果你不这样做那么一个名为_operational的布尔成员var就会保持为false需要将其设置为true

https://github.com/nlog/nlog/wiki/EventLog-target

machineName -运行事件日志服务的机器的名称。默认值:.

To easy Fix:

<target  name="eventlog"  xsi:type="EventLog"  layout="${longdate}|${level}|${message}"  log="Application"  source="My Source"  machineName="." />