如何为某些类配置不同级别的log4net?

时间:2012-12-20 21:18:23

标签: configuration log4net

我想为所有东西提供INFO,为一个包提供DEBUG。我尝试了很多变种:

<log4net>
    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
        <param name="File" value="C:/temp/AutoTag.log"/>
        <param name="AppendToFile" value="true"/>
        <param name="MaxSizeRollBackups" value="2"/>
        <param name="MaximumFileSize" value="100KB"/>
        <param name="RollingStyle" value="Size"/>
        <param name="StaticLogFileName" value="true"/>
        <layout type="log4net.Layout.PatternLayout">
            <param name="ConversionPattern" value="%d [%t] ac.server %-5p %c - %m%n"/>
        </layout>
    </appender>
    <root>
        <level value="INFO"/>
        <appender-ref ref="RollingFileAppender"/>
    </root>
    <logger name="AutoTagCore.net.windward.autotag.utils">
        <level value="DEBUG"/>
    </logger>
</log4net>

但没有任何作用。如果我删除<root/>部分,我会在一个包中找到详细信息。否则就好像<logger/>部分不存在一样。

我怎样才能做到这一点? (更新以显示完整的log4net部分)。

Update2:我是个白痴 - 我的包名错了。

1 个答案:

答案 0 :(得分:1)

Logger将从root继承所有appender。您只需指定级别:

<root>
    <level value="INFO"/>
    <appender-ref ref="RollingFileAppender"/>
</root>
<logger name="AutoTagCore.net.windward.autotag.utils">
    <level value="DEBUG"/>
</logger>

BTW 验证appender设置 - 可以限制为INFO级别:

<threshold value="INFO"/>

最后一个可能的问题 - 您可以使用不同类型的命名空间和记录器名称(可能是一些拼写错误)。