我在配置中配置了SMTP记录器,如下所示:
<appender name="SmtpEndUserAppender" type="log4net.Appender.SmtpAppender">
<to value="someReciever@sjm.com"/>
<from value="serviceAccount@sjm.com"/>
<subject value="Error occured in the XML Conversion Utility"/>
<smtpHost value="smtp server name"/>
<bufferSize value="1024"/>
<lossy value="false"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date{MM-dd-yyyy HH:mm:ss.ff} [%thread] %-5level %logger - %message%newline"/>
</layout>
</appender>
问题是,如果消息很小,它就会发送正常,但如果appender发现消息太长,它只是通过代码块而不接收收件箱中的任何电子邮件。
var log = LogManager.GetLogger(Constants.ENDUSEREMAILLOGGER);
log.Info(string.Format(Constants.EMAILERRORMESSAGETEMPLATE, unprocessedFile, ex.Message));
ex.message有时会变得很疯狂(比如2000行或者其他东西),因为我在使用字符串构建器时循环超过5000行并收集所有错误。
我们需要增加缓冲区大小吗?为什么会出现这种情况?
答案 0 :(得分:0)
您的短电子邮件是否可能通过log.Error发送,而您的大型电子邮件是否使用log.Info?
bufferSize是在发送过去的电子邮件之前缓冲的非错误事件的数量。换句话说,如果您没有使用log.Error,那么在您调用log.info 1024次然后获得一封包含所有1024条消息的电子邮件之前,您将不会收到任何电子邮件。
但是log.Error将刷新缓冲区,该缓冲区将立即发送电子邮件。
另一种可能性是,包含所有1024条消息的电子邮件被拒绝太大了。