如何在应用程序启动时将log4net info log写入级别高于信息级别的logger

时间:2017-10-24 14:41:20

标签: logging log4net

我想知道是否可以显式调用start info log写入日志文件。如果我使用Info方法并且Level将被设置为WARN,则不会在我请求的点处写入日志。非常感谢您的回答。

修改 感谢@ stuartd的回答,我终于通过以下配置解决了它:

    <logger name="InfoLogger" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="RollingFileAppender"/>
    </logger>
    <root>
        <level value="WARN"/>
        <appender-ref ref="RollingFileAppender"/>
    </root>

和这段代码:

    private static readonly log4net.ILog rootLogger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    private static readonly log4net.ILog infoLogger = log4net.LogManager.GetLogger("InfoLogger");
    private static readonly log4net.ILog log = infoLogger != null && (rootLogger == null || !rootLogger.IsInfoEnabled) ? infoLogger : rootLogger;

    static App()
    {
        log.Info("[Application start]");
    }

1 个答案:

答案 0 :(得分:0)

您有多种选择,但最简单的方法是在INFO级别设置一个单独的记录器,仅用于标题文本:

var infoLogger = LogManager.GetLogger("InfoLogger");
var yourLogger = LogManager.GetLogger("Your_Logger_Name");

// app start
infoLogger.Info("App started");

// in the app
yourLogger.Warn("Bad things happened");

如果您坚持如何配置,请将现有配置编辑到问题中。