Windows 服务未使用 Log4Net 记录
Windows service not logging with Log4Net
我在 .Net 4.5 中使用 Log4Net v1.2.13.0。当我 运行 我的代码作为控制台应用程序时,它记录得很好。但是,当我 运行 它作为一项服务时,我什么也得不到。该服务正在 运行ning 作为我的登录名,具有管理员权限。当我附加到进程并在调试模式下单步执行代码时,就好像配置文件中的任何内容都没有被读取一样。当您检查记录器对象 none 的属性是否设置为真时,例如Logger.IsDebugEnabled、Logger.IsInfoEnabled等
这是我配置记录器实例然后检索同一实例的方式。
private static readonly ILog Logger = LogManager.GetLogger(typeof(ServiceHostService));
我正在将日志记录级别设置为全部。
有什么可能出错的想法吗?
如果LogManager.GetRepository().Configured
returns false,那么log4net还没有初始化。
假设您在 XML 中有您的配置,将需要调用 log4net.Config.XmlConfigurator.Configure(…)
或像 [assembly: log4net.Config.XmlConfigurator(…)]
这样的程序集属性来加载配置。如果它位于与 app.config 不同的文件中,请确保将该文件复制到输出。
如果配置了 log4net 但所有日志级别仍被禁用,请通过查看 LogManager.GetRepository().ConfigurationMessages.Cast<LogLog>()
的结果检查配置问题。
如果您将配置添加到您的问题中,可能会有所帮助。
我在 .Net 4.5 中使用 Log4Net v1.2.13.0。当我 运行 我的代码作为控制台应用程序时,它记录得很好。但是,当我 运行 它作为一项服务时,我什么也得不到。该服务正在 运行ning 作为我的登录名,具有管理员权限。当我附加到进程并在调试模式下单步执行代码时,就好像配置文件中的任何内容都没有被读取一样。当您检查记录器对象 none 的属性是否设置为真时,例如Logger.IsDebugEnabled、Logger.IsInfoEnabled等
这是我配置记录器实例然后检索同一实例的方式。
private static readonly ILog Logger = LogManager.GetLogger(typeof(ServiceHostService));
我正在将日志记录级别设置为全部。
有什么可能出错的想法吗?
如果LogManager.GetRepository().Configured
returns false,那么log4net还没有初始化。
假设您在 XML 中有您的配置,将需要调用 log4net.Config.XmlConfigurator.Configure(…)
或像 [assembly: log4net.Config.XmlConfigurator(…)]
这样的程序集属性来加载配置。如果它位于与 app.config 不同的文件中,请确保将该文件复制到输出。
如果配置了 log4net 但所有日志级别仍被禁用,请通过查看 LogManager.GetRepository().ConfigurationMessages.Cast<LogLog>()
的结果检查配置问题。
如果您将配置添加到您的问题中,可能会有所帮助。