我正在使用Log4Net v1.2.13.0和.Net 4.5。当我将代码作为控制台应用程序运行时,它正好记录。但是,当我将其作为服务运行时,我什么也得不到。该服务作为我的登录名以管理员权限运行。当我附加到进程并在调试模式中逐步执行代码时,就好像配置文件中的任何内容都没有被读取。检查记录器对象时,没有任何属性设置为true,例如Logger.IsDebugEnabled,Logger.IsInfoEnabled等。
以下是我如何配置记录器实例然后检索相同的实例。
private static readonly ILog Logger = LogManager.GetLogger(typeof(ServiceHostService));
我将日志记录级别设置为ALL。
关于可能出错的任何想法?
答案 0 :(得分:3)
如果LogManager.GetRepository().Configured
返回false,则log4net尚未初始化。
假设您的配置采用XML格式,则需要调用log4net.Config.XmlConfigurator.Configure(…)
或汇编属性(如[assembly: log4net.Config.XmlConfigurator(…)]
)来加载配置。如果它位于app.config的单独文件中,请确保将该文件复制到输出中。
如果配置了log4net但仍然禁用了所有日志级别,请通过查看LogManager.GetRepository().ConfigurationMessages.Cast<LogLog>()
的结果来检查配置问题。
如果您将配置添加到问题中,可能会有所帮助。