根据用户选择创建日志文件

Creation of log file on user choice

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

我们需要在 C# 中完成。

你的问题实际上是 "how do I conditionally suppress output to an appender?",条件是 "If the -loglevel is 1, don't write to the debug logs."

代码将如下所示:

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 时会创建日志文件:因此这段代码无法阻止文件的创建,但它会禁止记录到文件。