log4net在登录到mssql2008数据库之前等待应用程序池回收

Rui*_*ang 5 log4net

我正在配置log4net:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "../ProjectName/Log4Net.config", Watch = true)]
Run Code Online (Sandbox Code Playgroud)

我配置了2个appender:1.AdoNetAppender登录到mssql2008数据库上的Log表.2. FileAppender看起来像这样:

<appender name="FileAppender" type="log4net.Appender.FileAppender">
  <file value="c:\log-file.txt" />
  <appendToFile value="true" />
  <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
  </layout>
</appender>
Run Code Online (Sandbox Code Playgroud)

问题是当记录一个动作时,它会立即出现在log-file.txt中.在我执行iisreset,重新编译Web代码或回收应用程序池之前,它不会显示为数据库中的条目.

配置似乎正确,因为操作最终会记录到数据库中.我只是不明白为什么要拖延.

任何人都可以给我一个理由或告诉我如何解决它?

Ste*_*gli 9

AdoNetAppender是一个缓冲的appender.如果要将其直接写入数据库,则需要将缓冲区大小设置为1:

<bufferSize value="1" />
Run Code Online (Sandbox Code Playgroud)