2010-06-21 79 views
4

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

请让我知道我在做什么错误。

回答

5

的我想你可能想使用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假

下面介绍如何编写一次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> 
+0

嘿丹尼尔戴森,,,非常感谢您的回复......但仍然不适合我。我已经在我的配置中添加了与u给出的相同的代码..但不是覆盖日志文件,而是开始在Content文件夹中创建多个文件。我想覆盖同一个文件中的信息。请给我们的视图。谢谢 – 2010-06-21 13:47:22

+0

嘿丹尼尔,,,对不起我的错误......它与FileAppender工作正常,由u.Thanks引用很多。 – 2010-06-21 13:53:14

0

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

1)您应该设置maxSizeRollBackups = 0。

2)您还应该设置appendToFile =真

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

+0

嘿Syd谢谢你的好感。我按照u的说法添加了属性,但是日志信息仍然在文件中追加。我想覆盖数据。请让我知道如果我做错了什么。 – 2010-06-21 13:07:22

+0

@Amit,你能再次澄清一下你的需求吗?您是否希望文件被覆盖,而不是每次开始记录过程时被追加到文件中? – Syd 2010-06-21 13:46:41

+0

我的不好。第二条语句不正确:应该设置appendToFile = false。由于这仍然不起作用,所以让我明天上班时检查日志文件。愚蠢的问题,但你重新启动IIS? – Syd 2010-06-21 14:00:58

3

尝试使用此:

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

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