如何将应用程序启动时的 log4net 信息日志写入级别高于信息级别的记录器

How to write log4net info log on application start into logger with level higher than info level

我想知道是否可以显式调用将开始信息日志写入日志文件。如果我使用 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]");
    }

您有多种选择,但最简单的可能是在 INFO 级别为 header 文本设置单独的记录器:

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");

如果您对如何配置感到困惑,请将您现有的配置编辑到问题中。