【问题标题】:Creation of log file on user choice [closed]根据用户选择创建日志文件 [关闭]
【发布时间】:2016-01-08 10:48:10
【问题描述】:

我们有一个控制台应用程序名称 JetIDR。我们在哪里使用 log4net 来记录 log 。此应用程序当前正在创建 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# 中完成。

【问题讨论】:

  • 很好。你试过什么?你在问什么?
  • 我在 log4net 中上网.. 不知道如何开始以及从哪里开始?

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


【解决方案1】:

您的问题实际上是“我如何有条件地抑制输出到附加程序?”,其中条件是“如果 -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 时会创建日志文件:此代码因此无法阻止文件的创建,但它会禁止记录到文件.

【讨论】:

  • 是的 .. debug.log 文件大小为 0kb 始终由应用程序创建 .. :( ...
猜你喜欢
  • 2019-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-03
  • 1970-01-01
  • 2019-07-16
相关资源
最近更新 更多