0

*强文本*我有一个启动 .Net 控制台应用程序(.exe 文件)的 Windows 服务。此控制台应用程序已启用日志记录,我正在使用 log4Net 进行日志记录。如果我单独运行控制台应用程序,则会创建日志文件。但是,如果我从 Windows 服务启动此控制台应用程序,它不会创建日志文件。

我的日志记录设置如下所述:

App.config 文件:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
  <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,     log4net" />
</configSections>
<log4net>
 <root>
  <level value="DEBUG" />
  <appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
  <file type="log4net.Util.PatternString" value="%envFolderPath{CommonApplicationData}\LOGS\MyLog.log" />
  <appendtofile value="true" />
  <rollingStyle value="Size" />
  <maxSizeRollBackups value="10" />
  <maximumFileSize value="10MB" />
  <staticLogFileName value="true" />
  <layout type="log4net.Layout.PatternLayout">
    <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – IDCC.%C{1}.%M - %m%n" />
  </layout>
</appender>
</log4net>
</configuration>

装配信息.cs

[assembly: log4net.Config.DOMConfigurator(Watch = true)]

如果我运行控制台应用程序,则此设置有效,但如果我将其集成到服务中并将其作为进程运行,它不会创建日志文件。我在服务中包含了应用程序的发布版本、App.config 文件和 log4Net.dll。

请告诉我如何解决这个问题。提前致谢。

更新:

经过一些测试,我才意识到日志文件是由 Windows 服务正确创建的。问题是我正在创建一个安装程序,它会在安装时自动启动此服务。那是没有创建日志文件的时候。我正在使用 WiX 创建安装程序。安装程序包含控制台应用程序 exe、App.config 和运行控制台应用程序的服务。我肯定遗漏了一些东西,请指教。

4

0 回答 0