*强文本*我有一个启动 .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 和运行控制台应用程序的服务。我肯定遗漏了一些东西,请指教。