【发布时间】:2015-02-24 19:53:11
【问题描述】:
我正在使用带有 .Net 4.5 的 Log4Net v1.2.13.0。当我将代码作为控制台应用程序运行时,它记录得很好。但是,当我将它作为服务运行时,我什么也得不到。该服务以我具有管理员权限的登录身份运行。当我附加到进程并在调试模式下逐步执行代码时,就好像配置文件中的任何内容都没有被读取。当您检查记录器对象时,没有任何属性设置为真,例如Logger.IsDebugEnabled、Logger.IsInfoEnabled 等
这是我配置记录器实例然后检索相同实例的方式。
private static readonly ILog Logger = LogManager.GetLogger(typeof(ServiceHostService));
我将日志记录级别设置为 ALL。
有什么想法可能是错的吗?
【问题讨论】:
-
您是否在某处调用了 Log4Net.Configure?
-
确保您的服务对 Log4net 正在写入的文件也具有写入权限。这不仅仅是一个安全访问问题。
-
不,我没有在代码中的任何地方调用 Log4Net.Configure。我从其他人那里继承了这段代码,它从未调用过它,并且作为控制台应用程序一直运行良好,但现在我正在推广服务。我正在写入数据库表和事件日志,但不是文件。服务在盒子上有管理员,并以数据库的 dbo 身份登录。
-
您的配置是否定义了
root记录器? -
另请注意,您的服务必须在提升的进程中运行一次才能创建事件源以启用对事件日志的日志记录