我刚刚开始使用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>
Run Code Online (Sandbox Code Playgroud)
usr*_*ΛΩΝ 16
BufferSize等于必须缓冲的日志消息的数量(即,如果设置为512,则一旦收集了512条消息,将发送邮件).
我相信将它设置为int.MaxValue(这是2.147.483.647)是一个合理的选择.对于一个系统来说,20亿条消息太多了,甚至是长时间运行的.
如果你给我10分钟,我会确认你(来自源代码),如果你清理停止你的应用程序,到目前为止收集的所有日志将被发送
[更新]:确认 !! 析构函数按预期方式刷新队列
[添加]我会删除有损和评估者.你的问题很明显:评估者优先于缓冲区:) :)
评估器用于在满足特定条件时刷新队列.你的病情等于true.触发此条件时,将发送电子邮件,因此这就是每次单个日志调用时发送邮件的原因.
这与仅发送信息和错误消息略有不同,这是通过日志过滤实现的.
删除这两个属性,您的代码将起作用.设置int.MaxValue将允许您存储最大可能的消息数.这不太可能(你最好赢得Superenalotto的178万欧元奖金,就像今晚的一些人一样,或被你头脑中的彗星击中)应用程序在一次运行中收集超过20亿个错误/信息.
| 归档时间: |
|
| 查看次数: |
6356 次 |
| 最近记录: |