我使用NServiceBus 2.6。
我使用log4net.config文件&通过我的端点中的代码初始化日志记录工具:
SetLoggingLibrary.Log4Net(() =>
XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config")));
当我正常运行NServiceBus.Host.exe时,它会正常运行,但是当我使用/ install将其部署为Windows服务时,不再记录任何内容。
如果我使用基于代码的方式,它可以工作:
SetLoggingLibrary.Log4Net<RollingFileAppender>(...)
任何想法为什么......?
答案 0 :(得分:1)
将进程作为Windows服务运行时,默认情况下不会将当前目录设置为二进制文件所在的位置。这意味着当你查找“log4net.config”时,它实际上会在c:\ windows \ system32中搜索。
试试这个(在调用SetLoggingLibrary之前):
System.IO.Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
或者,将代码修改为以下内容:
SetLoggingLibrary.Log4Net(() =>
XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "log4net.config"))));