Log4net configuration 具有多个SMTP附加器的Log4Net:一个不工作
我有一个带有多个附加器的控制台程序(.Net 4.5)。文件appender工作正常,一些smtp appender工作正常,一个不工作 所有smtp附加程序在应用程序关闭时发送邮件,即使缓冲区未满,但不发送任何内容的SmtpAppenderError除外。 我试图:Log4net configuration 具有多个SMTP附加器的Log4Net:一个不工作,log4net-configuration,Log4net Configuration,我有一个带有多个附加器的控制台程序(.Net 4.5)。文件appender工作正常,一些smtp appender工作正常,一个不工作 所有smtp附加程序在应用程序关闭时发送邮件,即使缓冲区未满,但不发送任何内容的SmtpAppenderError除外。 我试图: 在控制台中查看log4net中的调试信息,无配置错误 观察BufferingAppenderSkeleton集合中的缓冲区,我的消息都在那里 发送给不同的收件人 使用日志级过滤器 交换筛选器:如果我将SmtpAppenderOK
- 在控制台中查看log4net中的调试信息,无配置错误李>
- 观察BufferingAppenderSkeleton集合中的缓冲区,我的消息都在那里李>
- 发送给不同的收件人李>
- 使用日志级过滤器李>
- 交换筛选器:如果我将SmtpAppenderOK配置为记录“错误:”并将SmtpAppenderError配置为记录“FP:”,则我会从SmtpAppenderOK收到带有错误的邮件,而不会从SmtpAppenderError收到任何内容
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="C:\\Log\\myprogram\\log-" />
<datePattern value="yyyy-MM.dd'.log'" />
<param name="AppendToFile" value="true" />
<param name="Encoding" value="utf-8" />
<param name="RollingStyle" value="Date" />
<param name="StaticLogFileName" value="false" />
<param name="maxSizeRollBackups" value="90" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%5p [%d] - %m%n" />
</layout>
</appender>
<appender name="SmtpAppenderError" type="log4net.Appender.SmtpAppender">
<to value="a.b@c.com" />
<from value="sender@somewhere.com" />
<subject value="Error in program" />
<smtpHost value="mail.somewhere.com" />
<port value="25" />
<authentication value="Basic" />
<username value="user@somewhere.com" />
<password value="secret!" />
<bufferSize value="9999" />
<lossy value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date - %message%newline" />
</layout>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="ERROR:" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="SmtpAppenderOK" type="log4net.Appender.SmtpAppender">
<to value="a.b@c.com" />
<from value="sender@somewhere.com" />
<subject value="All right!" />
<smtpHost value="mail.somewhere.com" />
<port value="25" />
<authentication value="Basic" />
<username value="mail@somewhere.com" />
<password value="secret!" />
<bufferSize value="9999" />
<lossy value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date - %message%newline" />
</layout>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="FP:" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<appender name="SmtpAppenderDELETE" type="log4net.Appender.SmtpAppender">
<to value="a.b@c.com" />
<from value="sender@somewhere.com" />
<subject value="deleting..." />
<smtpHost value="mail.somewhere.com" />
<port value="25" />
<authentication value="Basic" />
<username value="mail@somewhere.com" />
<password value="secret!" />
<bufferSize value="999" />
<lossy value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%newline%date - %message%newline" />
</layout>
<filter type="log4net.Filter.StringMatchFilter">
<stringToMatch value="FP:delete" />
<acceptOnMatch value="true" />
</filter>
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="SmtpAppenderError" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="SmtpAppenderOK" />
<appender-ref ref="SmtpAppenderDELETE" />
</root>
我通过更改附加程序的顺序解决了这个问题,首先是所有SMTP,然后是文件附加程序。是的,伙计,我有两个SMTP附加程序1用于完整日志1的错误,当触发错误时,日志1没有发送。现在我改变了顺序,把日志放在第一位,它们现在都可以工作了。