为什么 log4net 在 .NET WCF 上一段时间后停止记录,但在普通网站上却没有?

Why does log4net stop logging after a while on .NET WCF but not a usual website?

我搜索了很多网站并尝试了几种不同的意见。但是我还是解决不了。以下是我现在所做的事情:

问题:

  1. 当我直接调用服务方法时(没有执行 2. 下面的步骤),没有写入日志
  2. 在浏览器上,我编写 te WCF url 并按下 ENTER,Log4Net 创建 文件夹和文件(此时文件为空)。
  3. 如果我发出请求并调用方法(执行第一步),现在 Log4Net 写入日志。

实际问题:

这里是 Config.xml:

 <?xml version="1.0" encoding="utf-8"?>

    <log4net>
       <appender name="ProcessInfo_FileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="L:\LOGs\ProcessInfo\ProcessInfo_[%processid].txt" />
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <appendToFile value="true" />
    <rollingStyle value="Composite" />
    <maxSizeRollBackups value="200" />
    <maximumFileSize value="30MB" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date [%thread] - %message%newline" />
    </layout>
  </appender>

     <logger name="ProcessInfo">
        <levelMin value="ERROR" />
        <levelMax value="INFO" />
        <appender-ref ref="ProcessInfo_FileAppender" />
      </logger>  
    <root></root>
    </log4net>

我还有其他 WCF 项目,即使有多个 Worker 也没有问题。 (我对它们使用了完全相同的 IIS 和 Log4Net xml 配置)。另外,正如我在标题中提到的,我有一个网站,它具有完全相同的日志记录代码(它们都使用我编写的通用第 3 方 dll)并且完全没有编写 Log4Net 文本日志记录的问题。

请帮忙

谢谢。

问题不在您的日志记录配置中,您应该尝试启用log4net 内部调试。这将告诉您日志记录停止的原因。我想有一些代码可以重新配置您的日志记录以从您的 web.config 加载配置,但不存在。

<configuration>
...
    <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
    </appSettings>

...

    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add 
                    name="textWriterTraceListener" 
                    type="System.Diagnostics.TextWriterTraceListener" 
                    initializeData="C:\tmp\log4net.txt" />
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

Log4net FAQ