38

我现在使用 Log4net 有一段时间了,它是一个了不起的日志框架,尤其是在连接到 Castle.Windsor 时。然而...

我通常使用滚动文件附加程序,但这导致日志文件比我实际想要的多,因此,对于我的最新项目,改为使用基本的 LogFileAppender,但问题是日志文件不断增长(似乎永远) .

如何告诉附加程序不要超过固定大小(并开始删除旧日志并将新日志附加到文件中?

我当前的配置如下:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
  <file value="E:\Logs\iWater\Schedule-Dispatch-API.log"/>
  <param name="AppendToFile" value="true"/>
  <maximumFileSize value="2048KB"/>
  <layout type="log4net.Layout.PatternLayout">
    <conversionPattern value="%-16date{dd MMM HH:mm:ss} %-7level %-25.35logger{1} %message%newline"/>
  </layout>
</appender>

它似乎没有尊重 maximumFileSize 属性。有什么解决办法吗?

或者,如何将滚动文件附加程序配置为仅创建 1 个文件(曾经)?

4

2 回答 2

76

FileAppender 类没有 MaxFileSize/MaximumFileSize 属性。只有使用 RollingFileAppender 才能获得这些。这是一个示例,它将您的文件限制为固定的最大大小,没有备份(将 maxSizeRollBackups 设置为 0)。请注意,当文件达到其最大大小时,它会被截断(基本上会删除所有现有的日志记录并重新开始):

<appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="0" />
    <maximumFileSize value="10MB" />
    <staticLogFileName value="true" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>
于 2009-03-13T02:30:41.177 回答
3

LogFileAppender 不支持限制输出文件的大小(至少在我能找到的参考资料中)。要限制文件大小,请使用 RollingFileAppender 并滚动 Size 并设置文件大小限制。

要限制翻转文件的数量,请使用MaxSizeRollBackups属性

于 2009-03-13T02:18:26.807 回答