如何将应用程序启动时的 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");
如果您对如何配置感到困惑,请将您现有的配置编辑到问题中。
我想知道是否可以显式调用将开始信息日志写入日志文件。如果我使用 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");
如果您对如何配置感到困惑,请将您现有的配置编辑到问题中。