log4net中的SMTP记录器不会发送很长的电子邮件

时间:2012-11-20 00:01:21

标签: email smtp log4net

我在配置中配置了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行并收集所有错误。

我们需要增加缓冲区大小吗?为什么会出现这种情况?

1 个答案:

答案 0 :(得分:0)

您的短电子邮件是否可能通过log.Error发送,而您的大型电子邮件是否使用log.Info?

bufferSize是在发送过去的电子邮件之前缓冲的非错误事件的数量。换句话说,如果您没有使用log.Error,那么在您调用log.info 1024次然后获得一封包含所有1024条消息的电子邮件之前,您将不会收到任何电子邮件。

但是log.Error将刷新缓冲区,该缓冲区将立即发送电子邮件。

另一种可能性是,包含所有1024条消息的电子邮件被拒绝太大了。