Log4net缓冲区大小不起作用 [英] Log4net buffer size not working

查看:88
本文介绍了Log4net缓冲区大小不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图将每100条记录输入数据库.如果我将缓冲区大小指定为100,它仍然将每条记录输入数据库.是否有一种方法可以指定刷新间隔和缓冲区大小.首先需要这样做. 这是我的配置.

<log4net>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="10" />
      <connectionType value="System.Data.SqlClient.SqlConnection, 
   System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="data source=;User ID=;Password=" />
      <commandText value="INSERT INTO Errorlog ([clientname],[username],[administration],[selectedentity],[project],[Date],[Thread],[Level],[Logger],
    [Message],[Exception],[browser],[ipaddress],[url],[errormessage]) VALUES (@clientname,@username,@administration,@selectedentity,@project,@log_date, @thread, @log_level, 
    @logger, @message, @exception,@browser,@ipaddress,@url,@errormessage)"/>
      <parameter>
        <parameterName value="@clientname" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{clientname}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@username" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{username}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@administration" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{administration}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@selectedentity" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{selectedentity}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@project" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{project}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@thread" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_level" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logger" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@exception" />
        <dbType value="String" />
        <size value="2000" />
        <layout type="log4net.Layout.ExceptionLayout" />
      </parameter>
      <parameter>
        <parameterName value="@browser" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{browser}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@ipaddress" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{ipaddress}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@url" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{url}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@errormessage" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{errormessage}" />
        </layout>
      </parameter>
    </appender>


    <root>
      <appender-ref ref="AdoNetAppender"/>
    </root>
  </log4net>

解决方案

Buffersize仅指定在提交之前应在RAM中保留多少个项目.它没有定义记录器的混乱的程度.

要定义有损记录器,您需要明确声明并定义可能丢失的内容:

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

im trying to enter every 100 records into the database.If i specify the buffer size as 100.It stills enters each record into the database.Is there a way where i can specify the flush interval and buffer size.So which comes first it takes that. This is my config.

<log4net>
    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="10" />
      <connectionType value="System.Data.SqlClient.SqlConnection, 
   System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="data source=;User ID=;Password=" />
      <commandText value="INSERT INTO Errorlog ([clientname],[username],[administration],[selectedentity],[project],[Date],[Thread],[Level],[Logger],
    [Message],[Exception],[browser],[ipaddress],[url],[errormessage]) VALUES (@clientname,@username,@administration,@selectedentity,@project,@log_date, @thread, @log_level, 
    @logger, @message, @exception,@browser,@ipaddress,@url,@errormessage)"/>
      <parameter>
        <parameterName value="@clientname" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{clientname}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@username" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{username}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@administration" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{administration}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@selectedentity" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{selectedentity}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@project" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{project}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_date" />
        <dbType value="DateTime" />
        <layout type="log4net.Layout.RawTimeStampLayout" />
      </parameter>
      <parameter>
        <parameterName value="@thread" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_level" />
        <dbType value="String" />
        <size value="50" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logger" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message" />
        <dbType value="String" />
        <size value="4000" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@exception" />
        <dbType value="String" />
        <size value="2000" />
        <layout type="log4net.Layout.ExceptionLayout" />
      </parameter>
      <parameter>
        <parameterName value="@browser" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{browser}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@ipaddress" />
        <dbType value="String" />
        <size value="100" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{ipaddress}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@url" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{url}" />
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@errormessage" />
        <dbType value="String" />
        <size value="255" />
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%property{errormessage}" />
        </layout>
      </parameter>
    </appender>


    <root>
      <appender-ref ref="AdoNetAppender"/>
    </root>
  </log4net>

解决方案

Buffersize only specifies how many items shall be kept in RAM before committing them. It does not define the Lossyness of the logger.

To define a lossy logger, you need to state that explicitly and define what can be lost:

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

这篇关于Log4net缓冲区大小不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆