2012-11-20 26 views
0

我已經在我的配置中配置的SMTP記錄,因爲這:SMTP記錄器沒有發出很長的電子郵件

<appender name="SmtpEndUserAppender" type="log4net.Appender.SmtpAppender"> 
        <to value="[email protected]"/> 
        <from value="[email protected]"/> 
        <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> 

的事情是,如果消息是小發送正常,但如果添加器發現太只要它通過代碼塊傳遞消息,而不在收件箱中收到任何電子郵件。

var log = LogManager.GetLogger(Constants.ENDUSEREMAILLOGGER); 
log.Info(string.Format(Constants.EMAILERRORMESSAGETEMPLATE, unprocessedFile, ex.Message)); 

的ex.message有時會變得瘋狂長(如2000線或東西),因爲我用字符串生成器,同時遍歷5000+行和收集的所有錯誤。

我們是否需要增加緩衝區大小?爲什麼會這樣?

回答

0

是否有可能您的短電子郵件是通過log.Error發送的,而您的大電子郵件是使用log.Info?

bufferSize是在發送過孔電子郵件之前緩衝的非錯誤事件的數量。換句話說,如果你沒有使用log.Error,那麼你將不會收到任何郵件,除非你調用了log.info 1024次,然後你得到一封包含所有1024條消息的郵件。

但log.Error會刷新將立即發送電子郵件的緩衝區。

另一種可能性是,包含所有1024條消息的電子郵件因爲太大而被拒絕。