NServiceBus.Host.exe作为windows服务log4net问题

时间:2012-07-03 12:28:41

标签: windows-services log4net nservicebus

我使用NServiceBus 2.6。

我使用log4net.config文件&通过我的端点中的代码初始化日志记录工具:

SetLoggingLibrary.Log4Net(() => 
       XmlConfigurator.ConfigureAndWatch(new FileInfo("log4net.config")));

当我正常运行NServiceBus.Host.exe时,它会正常运行,但是当我使用/ install将其部署为Windows服务时,不再记录任何内容。

如果我使用基于代码的方式,它可以工作:

SetLoggingLibrary.Log4Net<RollingFileAppender>(...)

任何想法为什么......?

1 个答案:

答案 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"))));