我想在log4net中设置一个RollingFileAppender,以便当前(即今天的)日志文件始终具有静态名称(如app.log),但是在结束时滚动当天,它应该重命名为app。< date> .log。这里和我到目前为止一样接近(请注意,我使用每分钟翻转而不是每天翻转,因为这样更容易调试):
<appender name="applog" type="log4net.Appender.RollingFileAppender">
<file value="app.log" />
<staticLogFileName value="false" />
<datePattern value=".yyyy-MM-dd-hh-mm" />
<preserveLogFileNameExtension value="true" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<maxSizeRollBackups value="5" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
这个问题是我在请求开始时看到以下内容:
到请求结束时,我有这些文件:
请注意,分钟还没有滚动,但它似乎已经创建了某种翻转文件。此外,今天的文件还没有被称为app.log&#39;如我所愿,它始终以名称中的时间戳开头。最后,它似乎并不尊重我的maxSizeRollBackups
5,据我所知,备份无限期地增长而不会被删除。
我尝试删除了staticLogFileName
代码,这就是今天的名称&#39; app.log&#39;就像我想要的那样,但它会在适当的位置滚动,覆盖自己而不是创建备份文件。
答案 0 :(得分:0)
在分解并下载源代码后,结果是翻转的System.IO.File.Move()
调用是一个权限问题。我需要将文件夹的Modify权限设置为true,而不仅仅是Read和Write(这很奇怪,因为从技术上讲,这不是一个写操作吗?)。
我还发现你不应该将staticLogFileName
设置为false,所以我不得不从xml中删除该元素。