2013-12-17 37 views
0

我有一个简单的应用程序:不允许用户删除日志文件

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锁定日志文件或至少在它们被删除后重新创建它们?

回答

4

使用enableFileDelete设置,使NLOG锁定文件:

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