我正在尝试将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已关闭。
答案 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="." />