log4net appenders到不同bufferSize的数据库

时间:2017-05-30 08:36:48

标签: c# logging log4net log4net-configuration log4net-appender

我有两个记录器用于不同级别的相同数据库。我想为每个记录器提供不同的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

1 个答案:

答案 0 :(得分:0)

您可以制作一个appender,并在收到错误消息时使用评估程序进行记录:

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

Evaluator是一个可插入的对象,由   BufferingAppenderSkeleton确定是否不应该记录日志事件   被缓冲,但是立即写入/发送。如果是评估员   决定事件是重要的,然后是整个内容   当前缓冲区将与事件一起发送。通常是   SmtpAppender将设置为在发送之前缓冲事件作为成本   发送电子邮件可能相对较高。如果是重要事件   到达,比如一个错误,我们希望立即交付   而不是等待缓冲区变满。这就是   评估员进来,因为它允许我们说:“当一个重要事件   到达时不要担心缓冲,只需发送你的一切   现在有“。