我在我的配置中配置了 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 行并收集所有错误时使用字符串生成器。
我们需要增加缓冲区大小吗?为什么会有这种行为?