我正在尝试在我的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>
当你想记录两个级别,例如只记录错误和信息时,你可以组合过滤器,如下所示
日志输出将为Info
和Error
。
<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"致命"消息;如果您将等级设置为"信息",则也会收到"警告、错误和致命"消息等