覆盖现有的日志文件

6
如何“覆盖现有的日志文件”?我已尝试设置属性<appendToFile value="false" />,但日志文件仍未被覆盖。我的配置文件设置如下:
  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="LogFileAppender" />
    </root>
    <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
      <file value="Content/log.txt" />
      <appendToFile value="false" />
      <threshold value="ON" />
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10" />
      <maximumFileSize value="10MB" />
      <staticLogFileName value="false" />
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
      </layout>
    </appender>
  </log4net>

请告诉我我哪里出错了。

3个回答

7

我认为你可能需要使用FileAppender而不是RollingFileAppender,它允许覆盖现有文件。

http://logging.apache.org/log4net/release/sdk/log4net.Appender.FileAppender.html

<appender name="FileAppender" type="log4net.Appender.FileAppender">
    <file value="Content/log.txt" />
    <appendToFile value="false" />
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

将appendToFile设置为false

以下是每次执行只写入rollingapender文件的方法,但仍会每次执行创建一个新文件:

来自示例页面

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file value="Content/log.txt" />
    <appendToFile value="false" />
    <rollingStyle value="Size" />
    <maxSizeRollBackups value="-1" />
    <maximumFileSize value="10MB" />
    <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
    </layout>
</appender>

嗨,Daniel Dyson,非常感谢您的回复......但是对我来说仍然不起作用。我已将您提供的相同代码添加到我的配置文件中...但是它开始在 Content 文件夹中创建多个文件而不是覆盖日志文件。我想要覆盖同一文件中的信息。请给出您的看法。谢谢 - Amit Soni
嘿,丹尼尔,抱歉我的错误...根据您提供的建议,使用FileAppender它正常工作了。非常感谢。 - Amit Soni

4

请尝试使用以下内容:

<param name="AppendToFile" value="false" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="0" />
<staticLogFileName value="true" />

这个配置将覆盖现有的日志文件。


0

覆盖现有文件是否意味着您想继续写入同一文件(例如循环缓冲区)?如果是这样,

1)您应该将maxSizeRollBackups设置为0。

2)您还应该将appendToFile设置为true

请尝试并告诉我们您的结果


嗨Syd,感谢您的关注。我已按照您所说的添加了属性,但日志信息仍然在文件中追加。我想覆盖数据。如果我做错了什么,请告诉我。 - Amit Soni
@Amit,你能再澄清一下你的需求吗?你是想在每次启动日志记录过程时覆盖文件而不是追加吗? - Syd
我的错。第二个语句不正确:应该将appendToFile设置为false。由于这仍然没有起作用,让我明天去上班时检查一下我的日志文件。问题有点傻,但是你重新启动了IIS吗? - Syd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接