log4net记录了所有级别,而不是我配置的级别。

3

我的日志级别设置为“INFO”,但是日志中出现了“DEBUG”事件。

配置

<?xml version="1.0"?>

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

    <log4net>
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
            <level value="INFO"/>
            <file value="Logs\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>
            <appender-ref ref="RollingFileAppender"/>
        </root>
    </log4net>
</configuration>

代码

private ILog Log { get; set; }

static Program()
{
    XmlConfigurator.Configure();
    //...
    this.Log.Info("Started in RunOnce mode.");
}

1
我会检查配置实际上是否已加载。 - axk
它确实可以,因为日志文件实际上正在使用中... - Josh M.
3个回答

7
我认为在您的根标签内,您需要为您的appender设置属性<level value="INFO">

3
正确,但更准确地说,<root>元素描述的是“记录器”,而不是“附加器”。这正是重点所在:日志级别是在记录器上指定的,而不是在附加器上指定的。 - Aasmund Eldhuset

1

0

我通常使用以下方式声明/初始化我的ILog:

private static readonly ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

然后在Web配置文件中定义记录器:(包括Program的完整命名空间)

<logger name="Program">
  <level value="Info"/>
  <appender-ref ref="RollingFileAppender"/>
</logger>

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