不允许用户删除日志文件

时间:2013-12-17 15:33:26

标签: c# logging configuration nlog

我有一个简单的应用程序:

public class Program
{
    private static readonly Logger Logger = LogManager.GetCurrentClassLogger();

    public static void Main(string[] args)
    {
        while (true)
        {
            Logger.Info(DateTime.Now.ToString());
            Thread.Sleep(5000);
        }
    }
}

配置:

<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="logfile" xsi:type="File" fileName="C:\Logs\log.txt" keepFileOpen="true" />
  </targets>
  <rules>
    <logger name="*" minlevel="Trace" writeTo="logfile" />
  </rules>
</nlog>

但是NLog似乎没有锁定log.txt(desipte keepFileOpen属性被设置为true) - 我可以删除它。更糟糕的是 - 日志文件在删除后不会重新创建。因此,如果用户意外删除了该文件 - 在重新启动应用程序之前将不会进行日志记录(或者更常见的情况是在发生新的日志文件名之前)。

有没有办法制作NLog锁定日志文件,或者至少在删除它们后重新创建它们?

1 个答案:

答案 0 :(得分:4)

使用enableFileDelete设置制作NLog锁定文件:

<target name="logfile" xsi:type="File" 
        fileName="C:\Logs\log.txt" 
        keepFileOpen="true" 
        enableFileDelete="false" />