【问题标题】:Log4Net not rolling on MaxFileSizeLog4Net 不在 MaxFileSize 上滚动
【发布时间】:2011-05-22 03:54:26
【问题描述】:

当旧的日志文件超过 MaxFileSize 并且停止将日志信息写入已经超过的文件时,我的 log4net 不知何故不会滚动到新文件。但是当我重新启动服务器时,它确实将旧的重命名为 ServerLog.txt.1 并创建了一个新文件 ServerLog.txt 并写入该文件。

这是我的 log4net.xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\ServerLog.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
  </appender>

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

有人可以帮我吗?谢谢。

【问题讨论】:

  • 是否有可能log4net由于文件权限问题导致无法创建/重命名备份文件?日志文件在哪里?
  • 它与Web应用程序Website/Logs/ServerLog.txt位于同一目录中我已将NETWORK SERVICE帐户设置为Read/Write/Modify?
  • 看不出问题。它的行为类似于 rollingStyle = Once,请确保您没有在源代码中覆盖它。
  • 不,我没有,在源代码中我所做的只是加载 log4net.xml 配置文件,仅此而已:( 当文件大小达到最大值时它会停止记录并且不创建新文件?

标签: c# logging configuration log4net rollingfileappender


【解决方案1】:

我怀疑您的问题可能来自使用 IIS 中的日志。由于可能有不同的应用程序域从 IIS 中访问日志文件,因此可能存在应用程序域无法滚动文件的问题,因为日志文件也在另一个应用程序域中打开。

您需要使用附加程序设置锁定模型,以防止应用程序域在访问文件时发生冲突。

你应该可以做这样的事情:

<?xml version="1.0" encoding="utf-8"?>
<log4net debug="true">
  <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Logs\ServerLog.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="10" />
    <maximumFileSize value="5MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%-5p %d %5rms %-22.22c{1} %-18.18M - %m%n" />
    </layout>
    <lockingModel type="log4net.Appender.FileAppender+MutexLock" />
  </appender>

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

【讨论】:

    【解决方案2】:
    【解决方案3】:

    我会尝试删除“staticLogFileName”。我们使用与您几乎相同的配置设置;但我们没有指定 staticLogFileName 属性。 (这是在黑暗中拍摄;因为应该可以将 staticLogFileName 设置为 true)

    【讨论】:

      【解决方案4】:

      在 Config 中将“rollingStyle”更改为“Composite”对我有用。

      <log4net debug="true">
        ....  
        <rollingStyle value="Composite"/>
        ....
      </log4net>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多