log4net在运行时删除文件是否可能c#

log4net delete file at runtime is it possible c#

是否可以在运行时删除日志?在应用程序启动之前我想做的是删除所有日志;如果那不可能,我想在运行时清除所有日志。

任何 suggestion/code 片段?

是的,是否可以清除日志文件。日志文件将通过启动程序创建(如果不存在)。 要清除文件,请查看此处:Clearing content of text file using C#

log4net 不支持 "out of the box"。但是,您可以使用 RollingFileAppender 并创建一个手动 class/method 来清理 up/delete 日志文件。请参考这个答案:

与其尝试以编程方式删除日志文件,我更喜欢结合使用 RollingFlatFileWriter 和计划任务,该任务每天重复执行如下内容: forfiles -p "C:\path to logd" -s -m *.log -d -5 -c "cmd /c del @path"

以上删除任何以 .log 结尾且超过 5 天的文件。这提供了足够的时间来确保备份存档中有每天可用的日志副本。

另一种选择是在日志文件名中使用 processid - 然后每次启动应用程序时,您都会得到一个新的日志文件:

<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net">
  <file type="log4net.Util.PatternString" value="D:\Logs\MyApp.log-[%processid].txt"/>