0

我使用 NServiceBus 2.6。

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

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

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

如果我使用基于代码的方式,它会起作用:

SetLoggingLibrary.Log4Net<RollingFileAppender>(...)

任何想法为什么...?

4

1 回答 1

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"))));
于 2012-07-12T11:54:19.727 回答