自动删除Enterprise Library 5 Rolling Log文件

时间:2014-04-29 12:27:47

标签: file logging file-io enterprise-library enterprise-library-5

我的项目中使用的Enterprise Library Logging工作正常,但是我注意到包含日志的文件夹已经开始变得臃肿,不再需要旧日志。我在app.config中的设置是:

    <add name="CommonListener" type="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.RollingFlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.RollingFlatFileTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    fileName="D:\Logs\Common.log" footer="   "
    formatter="Text Formatter" header="   " rollFileExistsBehavior="Increment"
    rollInterval="Midnight" rollSizeKB="1000000"/>

目前我可以手动删除这些内容,但这会导致问题,因为我无法访问它们将被存储的位置。是否有我可以添加到配置文件中的配置,该配置文件将标记它们在&#39; x&#39;之后被删除。天数?

1 个答案:

答案 0 :(得分:4)

我通过在监听器声明中将以下内容添加到app.config来限制Enterprise Logging sotes的文件数量来修复此问题:

maxArchivedFiles="20"

现在,日志记录最多只能保存20个文件,并在达到此阈值时删除最旧的文件。

我发现这样做的另一种不涉及企业库的方法可以在这里找到: Background Worker Check For When It's Midnight?

这是通过System.IO完成的,以便在经过一段时间后引发事件。然后将其与一个函数组合以删除此答案中的所有文件:

delete folder/files and subfolder