使用InstallNlogConfig将Nlog Config安装到Eventlog中

时间:2013-06-10 10:40:51

标签: c# .net logging nlog

我正在尝试将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:网络路径   没找到。

     

cn 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   可写的   System.Diagnostics.EventLog.FindSourceRegistration(String source,   String machineName,Boolean readOnly,Boolean wantToCreate)en   System.Diagnostics.EventLog._InternalLogNameFromSourceName(字符串   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ínea175zh   NLog.Targets.Target.Initialize(LoggingConfiguration配置)en   c:\ NLogBuild \ src \ NLog \ Targets \ Target.cs:línea288。2013-06-10   12:21:05.0708信息关闭记录... 2013-06-10 12:21:05.0708   Info Logger已关闭。

1 个答案:

答案 0 :(得分:2)

阅读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 - 运行事件日志服务的计算机的名称。默认值:。

轻松修复:

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