Log4Net +完成后发送电子邮件?

时间:2010-10-30 23:43:44

标签: log4net

我刚刚开始使用Log4Net ...我现在想要发送一封电子邮件,其中包含附加或直接邮寄的完整日志。使用SmtpAppender的问题在于它需要一个未知的bufferSize,因为它应该发送邮件,无论是充满错误还是信息。

更新:我的配置文件

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">

    <to value="ebb@mail.com" />
    <from value="ebb@mail.com" />
    <subject value="Backup Application - Log" />
    <smtpHost value="mailserver" />
    <authentication value="1" />
    <username value="userName" />
    <password value="mypw" />

    <port value ="25"/>
    <lossy value="true" />
    <bufferSize value="500" />

    <evaluator type="log4net.Core.LevelEvaluator">
        <threshold value="ALL"/>
    </evaluator>

    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%timestamp [%thread] %-5level %logger – %message%newline" />
    </layout>

</appender>

1 个答案:

答案 0 :(得分:16)

BufferSize等于必须缓冲的日志消息数(即如果设置为512,则一旦收集了512条消息,就会发送邮件)。

我认为将其设置为int.MaxValue(2.147.483.647)是一个合理的选择。对于一个系统来说,20亿条消息太多了,甚至是长期运行的。

如果你给我10分钟,我会(从源代码)确认你,如果你清理停止你的应用程序,到目前为止收集的所有日志都将被发送

[更新]:确认 !!析构函数按预期刷新队列

[添加]我会删除有损和评估者。你的问题很明显:评估者优先于缓冲区:):)

评估程序用于在满足特定条件时刷新队列。您的条件等于true。触发此条件时,将发送电子邮件,因此这就是每次单个日志调用时发送邮件的原因。

稍微不同发送ONLY信息和错误消息,这是通过日志过滤实现的。

删除这两个属性,您的代码将起作用。设置int.MaxValue将允许您存储最大可能的消息数。这不太可能(你最好赢得Superenalotto的178万欧元奖金,就像有些人今晚所做的那样,或被你头脑中的彗星击中)应用程序在一次运行中收集了超过20亿个错误/信息。