Log4Net smtpappender正在忽略级别筛选器
我正在使用Log4Net记录我的应用程序中所有不同类型的事件。因此,我配置了一个fileAppender和一个smtpAppender。 当fileAppender记录所有内容时,smptAppender只应在记录级别为致命时向我发送电子邮件 现在,Log4Net正在向我发送错误和致命级别的电子邮件 这是我的配置:Log4Net smtpappender正在忽略级别筛选器,log4net,Log4net,我正在使用Log4Net记录我的应用程序中所有不同类型的事件。因此,我配置了一个fileAppender和一个smtpAppender。 当fileAppender记录所有内容时,smptAppender只应在记录级别为致命时向我发送电子邮件 现在,Log4Net正在向我发送错误和致命级别的电子邮件 这是我的配置: <log4net> <appender name="FileAppender" type="log4net.Appender.RollingFileAppend
<log4net>
<appender name="FileAppender" type="log4net.Appender.RollingFileAppender">
<file value="C:\Temp\xxx.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<maxSizeRollBackups value="150" />
<layout type="log4net.Layout.PatternLayout">
<header value="DateTime | Thread | Level | ClassName | Message" />
<conversionPattern value="%date | %thread | %-5level | %logger | %message%newline" />
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<filter type="log4net.Filter.LevelMatchFilter">
<acceptOnMatch value="true" />
<levelToMatch value="FATAL" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
<to value="xxx" />
<from value="xxx" />
<subject value="Error" />
<smtpHost value="xxx" />
<bufferSize value="512" />
<lossy value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date | %thread | %-5level | %logger | %message%newline" />
</layout>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
<appender-ref ref="SmtpAppender" />
</root>
</log4net>
我知道这个问题已经很老了,但我为其他有这个问题的人发布了这个答案
您正在使用“有损”和“缓冲区大小”设置。我猜是在日志到达致命事件时获取最后512个事件(不仅仅是致命事件)
不使用LevelMatchFilter或LevelEvaluator,您可以简单地使用一个简单的“阈值”(不在evaluator中)进行测试
有关更多信息,请参阅
但我认为在这种情况下,您将不会收到其他事件,因此缓冲将是无用的。我知道这个问题已经很老了,但我为其他有此问题的人发布了此答案
您正在使用“有损”和“缓冲区大小”设置。我猜是在日志到达致命事件时获取最后512个事件(不仅仅是致命事件)
不使用LevelMatchFilter或LevelEvaluator,您可以简单地使用一个简单的“阈值”(不在evaluator中)进行测试
有关更多信息,请参阅
但我认为,在这种情况下,您将不会收到邮件中的其他事件,因此缓冲将是无用的
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="FATAL"/>
</evaluator>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="FATAL"/>
<param name="LevelMax" value="FATAL"/>
</filter>