0

我是 log4net 的新手,一直在阅读和阅读,并没有得出我的问题是什么的结论。这是配置:

<root>
  <level value="DEBUG" />
  <appender-ref ref="AdoNetAppender"/>
</root>

<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
  <bufferSize value="1" />
  <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
  <connectionString value="Server=XXXXX;Database=XXX;Network=XXXXX;User ID=XXXXX;Password=XXXXX" />
  <commandType value="StoredProcedure" />
  <commandText value="dbo.LogWrite" />
  <parameter>
    <parameterName value="@LogDate" />
    <dbType value="DateTime" />
    <layout type="log4net.Layout.RawTimeStampLayout" />
  </parameter>
  <parameter>
    <parameterName value="@LogLevel" />
    <dbType value="String" />
    <size value="50" />
    <layout type="log4net.Layout.PatternLayout" value="%level" />
  </parameter>
  <parameter>
    <parameterName value="@Logger" />
    <dbType value="String" />
    <size value="255" />
    <layout type="log4net.Layout.PatternLayout" value="%logger" />
  </parameter>
  <parameter>
    <parameterName value="@UserID" />
    <dbType value="Int32" />
    <layout type="log4net.Layout.PatternLayout" value="%property{UserID}" />
  </parameter>
  <parameter>
    <parameterName value="@Message" />
    <dbType value="String" />
    <size value="4000" />
    <layout type="log4net.Layout.PatternLayout" value="%message" />
  </parameter>
  <parameter>
    <parameterName value="@Exception" />
    <dbType value="String" />
    <size value="4000" />
    <layout type="log4net.Layout.ExceptionLayout"/>
  </parameter>
</appender>

当我转到 .NET 页面并在 Page_Load 中执行此语句时:

log.Error("hi")

我将此错误作为我的数据库表中的一个条目。但是,如果我很快再次访问此页面,我总共会获得 3 个条目?似乎如果我在重新加载页面之前等待大约 10 秒,我只会再获得一个条目。我已将缓冲区大小设置为 1。有人遇到同样的问题吗?社区的大多数人倾向于说,如果有问题,那么很可能是在您的配置中,但对我来说,我的配置看起来不错。

非常感谢任何能对此有所启发的人!

//丹尼尔

4

1 回答 1

1

Log4Net 可能工作得很好。它正在记录正在发生的事情。

您需要弄清楚为什么 Page_Load 在您不期望的情况下正在执行。

于 2012-07-31T15:07:28.303 回答