我使用 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"))));