根据用户选择

时间:2016-01-08 10:48:10

标签: c# logging log4net log4net-configuration log4net-appender

我们有一个控制台应用程序名称JetIDR。我们在哪里使用log4net来记录日志。这个应用程序目前正在创建2个日志文件JetIDR-INFO.LOG和JetIDR-Debug.LOG。我们希望增强应用程序以支持创建日志文件的灵活性,如下所示。

  • 命令行参数应命名为-log
  • -loglevel的有效参数仅为1和2
  • 当参数1与-loglevel一起使用时,应创建JetIDR-INFO.LOG文件
  • 当参数2与-loglevel一起使用时,JetIDR-INFO.LOG&应该创建JetIDR-DEBUG.LOG文件

我们需要在C#中完成。

1 个答案:

答案 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时创建日志文件:此代码因此无法阻止创建文件,但它将禁止记录到文件