【问题标题】:overwrite existing log file覆盖现有的日志文件
【发布时间】:2010-06-21 12:46:53
【问题描述】:

如何“覆盖现有的日志文件”???我试图设置属性属性<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>

请让我知道我在哪里做错了。

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc log4net


    【解决方案1】:

    我认为您可能想要使用 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 文件,但每次执行时仍会创建一个新文件:

    From the examples page

    <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 ,,, 非常感谢您的回复...但它仍然不适合我。我在我的配置中添加了你给出的相同代码。但不是覆盖日志文件,而是开始在内容文件夹中创建多个文件。我想覆盖同一个文件中的信息。请给你的看法。谢谢
    • 嘿 Daniel ,,, 对不起我的错误...它与你提到的 FileAppender 一起工作正常。非常感谢。
    【解决方案2】:

    尝试使用这个:

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

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

    【讨论】:

      【解决方案3】:

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

      1) 您应该设置 maxSizeRollBackups=0。

      2) 你还应该设置 appendToFile = true

      请尝试让我们知道您的结果

      【讨论】:

      • 嘿,Syd 感谢您的关注。我已经按照你的要求添加了属性,但日志信息仍然附加在文件中。我想覆盖数据。如果我做错了什么,请告诉我。
      • @Amit,你能再澄清一下你的要求吗?您是否希望在每次启动日志记录过程时覆盖文件而不是附加到文件?
      • 我的错。第二个说法不正确:应该设置 appendToFile=false。由于这仍然不起作用,让我明天上班时检查我的日志文件。愚蠢的问题,但是您是否重新启动了 IIS?
      猜你喜欢
      • 2019-03-17
      • 2019-09-30
      • 2020-08-08
      • 2010-11-01
      • 2016-04-22
      • 2018-09-01
      • 2012-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多