如何启用和禁用log4Net日志级别



我正在尝试在我的Dot-Net Core C#库中设置log4net配置。我已经配置了以下日志级别。但我想独立启用和禁用日志级别。

<root>
<level value="Info" /> 
<level value="Warn" />
<level value="Error" />
<level value="Fatal" />
<level value="Debug" />
<appender-ref ref="LogFileAppender" />
</root>

例如,如何通过将Debug标志设置为true或false来禁用和启用它?类似的东西

<level value="Debug"  Enable = "True"/>

我想有一些设置,但我不记得了。感谢您帮助解决此问题。

您必须在appender上应用LevelMatchFilter,它会根据指定级别的精确匹配进行筛选。如果您想记录一个以上的特定级别,可以组合多个筛选器
请注意,必须以DenyAllFilter结尾才能阻止其他级别。

举个例子,给定这些日志语句

logger.Debug("Debug");
logger.Info("Info");
logger.Warn("Warn");
logger.Error("Error");
logger.Fatal("Fatal");

当您应用下面的配置时,只会记录消息Debug

<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="DEBUG" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />

<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<root>
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>

当你想记录两个级别,例如只记录错误和信息时,你可以组合过滤器,如下所示
日志输出将为InfoError

<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="ERROR" />
</filter>
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />

<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message%newline" />
</layout>
</appender>
<root>
<appender-ref ref="ConsoleAppender" />
</root>
</log4net>

但我想独立启用和禁用日志级别。

你不能。

级别不是独立的,但按以下排序

ALL
DEBUG
INFO
WARN
ERROR
FATAL
OFF

因此,当您设置日志记录级别时,您会自动将该级别的消息所有较低级别的消息都包括在内。

例如,如果您将级别设置为"调试",则还会收到"信息"、"警告"、"错误"one_answers"致命"消息;如果您将等级设置为"信息",则也会收到"警告、错误和致命"消息等

最新更新