我使用log4net记录器实现了一个Windows服务。问题是当我调试服务时,会创建日志但是在安装之后,日志不会创建。我使用了app.config文件和另一个配置文件来添加配置细节
这是我的app.config文件
evalRandIO $ evalStateT bar False
这是另一个名为log4.config
的配置文件<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <appSettings>
<!--Log file configuration-->
<add key="log4net.Config" value="log4.config"/>
<add key="log4net.Config.Watch" value="True"/>
<add key="log4net.Internal.Debug" value="false"/> </appSettings> </configuration>
我使用以下方式创建日志消息
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="D:\applications\ActualSys\FujiOrder\log\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="RollingFileAppender" />
</root> </log4net> </configuration>
这在调试时非常有效。但是在安装该服务后这不起作用。
我尝试使用AssemblyInfo.cs文件执行以下代码片段。但问题尚未解决
[assembly:log4net.Config.XmlConfigurator(Watch = true)]
安装服务时,下面的文件位于已安装的文件夹中
即使我可以看到很多日志文件的示例都没有在调试阶段创建,但我在安装阶段找不到有关同一问题的文章。
答案 0 :(得分:0)
首先在配置中启用log4net debuging:
<configuration>
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
</appSettings>
</configuration>
开始记录之前,需要调用log4net configure。因为当您作为服务运行时,您在调试器中运行时具有不同的入口点。检查您是否确实调用了configure。
另一个问题可能是在写入日志记录目录时存在某种拒绝访问。您以不同的用户身份运行。这将在log4net的调试日志中。或者您可以通过调试会话锁定文件。