1

我正在尝试将带有 Nlog 的日志写入 Eventlog,这是我的 Nlog.config 的一个示例

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

使用管理员权限执行InstallNlogConfig时,会显示此错误:

NLog.NLogConfigurationException:EventLog Target[eventlog]初始化期间出错 - System.IO.IOException:找不到网络路径。

en Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode, String str) en Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey, String machineName, RegistryView view) en System.Diagnostics.EventLog.GetEventLogRegKey(String machine, Boolean writable) en System .Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate) en System.Diagnostics.EventLog._InternalLogNameFromSourceName(String source, String machineName) en System.Diagnostics.EventLog.LogNameFromSourceName(String source, String machineName) en NLog.Targets.EventLogTarget.InitializeTarget() en c:\NLogBuild\src\NLog\Targets\EventLogTarget.cs:línea 175 en NLog.Targets.Target.Initialize(LoggingConfiguration 配置) en c:\NLogBuild\src\NLog\Targets \目标.cs:linea 288. 2013-06-10 12:21:05.0708 信息正在关闭日志记录... 2013-06-10 12:21:05.0708 信息记录器已关闭。

4

1 回答 1

2

读入 Nlog,Eventlog 目标。

这篇文章http://berryware.wordpress.com/2009/11/06/nlog-and-windows-event-log-bug/详细解释了我没有定义 machineName 的情况。毕竟,文档说明 machineName 无论如何都默认为本地计算机,那么为什么要设置它呢?好吧......因为如果你不这样做,那么一个名为 _operational 的布尔成员变量将保持“假”,并且需要将其设置为“真”

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

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

轻松修复:

<target  name="eventlog"  xsi:type="EventLog"  layout="${longdate}|${level}|${message}"  log="Application"  source="My Source"  machineName="." />
于 2013-06-10T12:08:14.397 回答