如何使用 NLog 从 Windows 服务中动态加载的 dll 写入 eventLog。
使用 NLog 2.0.1 我有一个 Windows 服务,它可以从我正在使用(试图)NLog 记录到 EventLog 的那个 dll 中动态加载一个 dll。eventLog 是自定义的,由服务安装程序创建。
错误:
Service cannot be started. System.Reflection.TargetInvocationException:
Exception has been thrown by the target of an invocation.
---> System.TypeInitializationException: The type initializer for 'MyService.Worker' threw an exception.
---> NLog.NLogConfigurationException: Error during initialization of EventLog Target[eventLog_wrapped]
---> System.IO.IOException: The network path was not found.
at Microsoft.Win32.RegistryKey.Win32ErrorStatic(Int32 errorCode, String str)
at Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(RegistryHive hKey, String machineName, RegistryView view)
at System.Diagnostics.EventLog.GetEventLogRegKey(String machine, Boolean writable)
at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate)
at System.Diagnostics.EventLog._InternalLogNameFromSourceName(String source, String machineName)
at System.Diagnostics.EventLog.LogNameFromSourceName(String source, String machineName)
at NLog.Targets.EventLogTarg...
我创建了一个 winForm 应用程序来测试日志记录,并且日志记录按预期工作,但是当我尝试在我的服务中做同样的事情时它不起作用。
我尝试在“本地系统”和“网络服务”下运行服务,我得到了同样的错误。至于“网络路径....”,没有网络路径被访问,所以我不确定这试图告诉我什么。
我的 NLog 配置/目标是:
<variable name="appName" value="MyApp" />
<variable name="source" value="MySource" />
<target xsi:type="EventLog"
name="log"
log="My Service"
source="${source}"
machineName="."
layout="${callsite}${newline} ${message}${newline}${exception:format=ToString}"
/>
任何关于如何使这项工作的想法将不胜感激。