我们有一个控制台应用程序名称JetIDR。我们在哪里使用log4net来记录日志。这个应用程序目前正在创建2个日志文件JetIDR-INFO.LOG和JetIDR-Debug.LOG。我们希望增强应用程序以支持创建日志文件的灵活性,如下所示。
-log
-loglevel
的有效参数仅为1和2 -loglevel
一起使用时,应创建JetIDR-INFO.LOG文件-loglevel
一起使用时,JetIDR-INFO.LOG&应该创建JetIDR-DEBUG.LOG文件我们需要在C#中完成。
答案 0 :(得分:1)
你的问题是有效的"我如何有条件地抑制输出到appender?",条件是"如果-loglevel
是1,不要写调试日志。"
代码看起来像这样:
if (logLevel == 1)
{
// assuming appender name is DebugAppender and it is a FileAppender
var appender = log4net.LogManager.GetRepository()
.GetAppenders()
.OfType<FileAppender>()
.SingleOrDefault(a => a.Name == "DebugAppender");
if (appender != null)
{
// Disable the appender
appender.Threshold = Level.Off;
appender.ActivateOptions();
}
}
但是请注意,如果在配置中定义了appender,则在配置log4net时创建日志文件:此代码因此无法阻止创建文件,但它将禁止记录到文件