log4net创建日志文件但不写入内容。

5

我正在尝试为Windows服务使用基本日志记录。

我添加了对log4net的引用。

我在AssemblyInfo.cs中添加了以下内容:

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

我在我的App.config中加入了以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821" requirePermission="false" />
  </configSections>

  <!-- Log4net Logging Setup -->
  <log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender,log4net">
      <file value="c:\\CGSD\\log\\logfile.txt" />
      <appendToFile value="true" />
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %level %logger - %message%newline" />
      </layout>
      <filter type="log4net.Filter.LevelRangeFilter">
        <levelMin value="INFO" />
        <levelMax value="FATAL" />
      </filter>
    </appender>

    <root>
      <level value="ALL"/>
      <appender-ref ref="RollingFileAppender"/>
    </root>
  </log4net>
</configuration>

我在我的服务中有以下代码:

    log4net.Config.XmlConfigurator.Configure();
    log4net.ILog log = log4net.LogManager.GetLogger(typeof(Program));

    log.Debug("test");

文件c:\CGSD\log\logfile.txt已创建,但从未写入任何内容。
我已经在论坛中寻找了一整天,试图追踪这个问题,但如果我忽略了已发布的解决方案,我很抱歉。

如果您在log.Debug行中设置断点,您能够到达该行吗? - abellina
2个回答

4

您的过滤级别似乎配置为 <levelMin value="INFO" />,但您正在测试一个 log.Debug 消息。请将您的配置更改为 <levelMin value="DEBUG" /> 并重试。如果这不能解决问题,则可能存在其他配置问题。


搞定了。我改变了<levelMin value="DEBUG" />,现在我可以在日志文件中看到条目了。 - Bipin Butala

0

您需要最低的 INFO 级别,但却试图记录一个级别为 DEBUG 的消息。正如文档(http://logging.apache.org/log4net/release/manual/introduction.html)所述,DEBUG 的优先级低于 INFO,因此您的消息被过滤掉了。


搞定了。我改变了<levelMin value="DEBUG" />,现在我可以在日志文件中看到条目了。 - Bipin Butala

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接