【问题标题】:log4net not logging debug statementslog4net 不记录调试语句
【发布时间】:2012-05-22 17:03:56
【问题描述】:

我是第一次使用 log4net,并使用提供的配置示例按照文档进行操作,但是调试语句不记录。

信息、错误、警告和致命级别都正确记录。谁能告诉我我错过了什么?

app.config:

<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

<log4net>
    <appender name="Console" type="log4net.Appender.ColoredConsoleAppender">

        <mapping>
            <level value="INFO" />
            <foreColor value="Green"/>
        </mapping>

        <mapping>
            <level value="DEBUG" />
            <foreColor value="Cyan,HighIntensity"/>
        </mapping>

        <mapping>
            <level value="WARN" />
            <foreColor value="Purple,HighIntensity"/>
        </mapping>

        <mapping>
            <level value="ERROR" />
            <foreColor value="Red,HighIntensity"/>
        </mapping>

        <mapping>
            <level value="FATAL" />
            <foreColor value="Yellow,HighIntensity"/>
        </mapping>

        <layout type="log4net.Layout.PatternLayout">
            <!-- Pattern to output the caller's file name and line number -->
            <conversionPattern value="%5level [%thread] (%file:%line) - %message%newline" />
        </layout>            
    </appender>

    <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
        <file value="example.log" />
        <appendToFile value="true" />
        <maximumFileSize value="100KB" />
        <maxSizeRollBackups value="2" />

        <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%level %thread %logger - %message%newline" />
        </layout>
    </appender>

    <root>
        <level value="INFO" />
        <appender-ref ref="Console" />
        <appender-ref ref="RollingFile" />
    </root>
</log4net>

有些人提到检查[assembly: log4net.Config.XmlConfigurator()] 的AssemblyInfo,但是有或没有这一行没有区别。

Logger 声明如下:

private static readonly ILog log = LogManager.GetLogger( typeof( CWD_Netsuite ) );

访问方式如下:

XmlConfigurator.Configure();
log.Debug("Debugging");             //does not get logged
log.Info( "Entering Application" ); //logged to console and log file
log.Debug( "Debug Statement" );     //does not get logged 

log.Error( "Error statement" );     //logged to console and log file
log.Warn( "Warning statement" );    //logged to console and log file
log.Fatal( "Fatal Statement" );     //logged to console and log file

【问题讨论】:

  • 只是为了澄清以下所有答案,在 Log4Net 日志层次结构中,DEBUG 是最低的,低于 INFO。

标签: c# log4net


【解决方案1】:

您的根类别中有一个过滤器设置为INFO 级别(因此过滤掉了DEBUG 级别的任何消息):

<root>
    <level value="INFO" />
    <appender-ref ref="Console" />
    <appender-ref ref="RollingFile" />
</root>

改成

    <level value="DEBUG" />

【讨论】:

    【解决方案2】:

    log4net 级别按以下顺序定义:

    所有, 调试, 信息, 警告, 错误, 致命的, 关闭

    根据您当前的设置,您正在使用 INFO 及以下内容编写所有内容。

    将根节点设置为以下:

    <root>
        <level value="DEBUG" />
        <appender-ref ref="Console" />
        <appender-ref ref="RollingFile" />
    </root>
    

    【讨论】:

      【解决方案3】:

      在您的节点中将级别值更改为“DEBUG”...

      <root>
          <level value="DEBUG" />
          <appender-ref ref="Console" />
          <appender-ref ref="RollingFile" />
      </root>
      

      【讨论】:

        猜你喜欢
        • 2014-11-02
        • 2017-01-03
        • 1970-01-01
        • 2012-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多