我有两个记录器用于不同级别的相同数据库。我想为每个记录器提供不同的bufferSize。 一种方法是将两个appender放到同一个数据库中,只有bufferSize元素不同,但它是复制粘贴。 是否可以扩展已定义的appender并更改它的bufferSize属性? 例如:
<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
<bufferSize value="20" />
...other elements
</appender>
<appender name="AdoNetAppenderChild" extends="AdoNetAppender">
<bufferSize value="1" />
</appender>
<logger name="Fatal" additivity="false">
<level value="FATAL"/>
<appender-ref ref="AdoNetAppenderChild" />
</logger>
<logger name="Common" additivity="false">
<level value="INFO"/>
<appender-ref ref="AdoNetAppender" />
</logger>
我想避免的是有两个具有相同元素和属性的appender,只有不同的值是bufferSize
答案 0 :(得分:0)
您可以制作一个appender,并在收到错误消息时使用评估程序进行记录:
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR"/>
</evaluator>
Evaluator是一个可插入的对象,由 BufferingAppenderSkeleton确定是否不应该记录日志事件 被缓冲,但是立即写入/发送。如果是评估员 决定事件是重要的,然后是整个内容 当前缓冲区将与事件一起发送。通常是 SmtpAppender将设置为在发送之前缓冲事件作为成本 发送电子邮件可能相对较高。如果是重要事件 到达,比如一个错误,我们希望立即交付 而不是等待缓冲区变满。这就是 评估员进来,因为它允许我们说:“当一个重要事件 到达时不要担心缓冲,只需发送你的一切 现在有“。