NServiceBus.Host.exe as windows service log4net issue



我使用 NServiceBus 2.6。

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

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

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

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

SetLoggingLibrary.Log4Net<RollingFileAppender>(...)

任何想法为什么...?

将进程作为 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"))));

最新更新