根据用户选择创建日志文件
Creation of log file on user choice
我们有一个名为 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# 中完成。
你的问题实际上是 "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 时会创建日志文件:因此这段代码无法阻止文件的创建,但它会禁止记录到文件。
我们有一个名为 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# 中完成。
你的问题实际上是 "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 时会创建日志文件:因此这段代码无法阻止文件的创建,但它会禁止记录到文件。