加载log4net时出错

本文关键字:出错 log4net 加载 | 更新日期: 2023-09-27 18:06:25

我们的应用程序包含一个Windows服务,我们可以将其作为控制台应用程序运行以进行调试;测试的目的。它使用log4net将日志条目写入Windows事件日志。

今天早上,我在我们的开发机器上安装了我们的应用程序,然后卸载了它。自从我卸载了它,每当我将服务作为控制台应用程序启动时,我就开始得到以下错误消息:
log4net:ERROR XmlHierarchyConfigurator: Could not create Appender
        [EventLogAppender] of type [log4net.Appender.EventLogAppender]. 
      Reported error follows.
System.Security.SecurityException: Requested registry access is not allowed.
    at Microsoft.Win32.RegistryKey.OpenSubKey
                 (String name, Boolean writable)
    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.DeleteEventSource
        (String source, String machineName)
    at log4net.Appender.EventLogAppender.ActivateOptions()
    at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender
         (XmlElement appenderElement)
  The Zone of the assembly that failed was:
     MyComputer

谁能指出我在正确的方向来解决这个问题?请注意,事件日志记录似乎正在工作,所以我不清楚log4net在抱怨什么。

加载log4net时出错

您需要特殊的(提升的)权限来写入应用程序日志(因为您使用的是写入Windows事件记录器的EventLogAppender)。

检查当前用户的权限

创建事件源实际上需要在HKEY_LOCAL_MACHINE'SYSTEM'CurrentControlSet'Services'EventLog'Application下创建注册表项,这就是为什么它需要更高的权限。与接受的答案相反,应用程序不需要提升权限来写入事件日志。

可以在应用程序外部创建事件源(例如从安装程序)。这个主题在EventLogAppender

的官方文档中有介绍