【问题标题】:Do not allow users to delete log files不允许用户删除日志文件
【发布时间】:2014-01-05 10:54:59
【问题描述】:

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

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(将 keepFileOpen 属性设置为 true) - 我可以删除它。更糟糕的是 - 日志文件在被删除后不会重新创建。因此,如果用户不小心删除了该文件 - 在重新启动应用程序之前(或更一般的情况下,直到出现新的日志文件名)才会有日志记录。

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

【问题讨论】:

    标签: c# logging configuration nlog


    【解决方案1】:

    使用enableFileDelete设置NLog锁文件:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-02
      • 2021-01-02
      • 1970-01-01
      • 1970-01-01
      • 2011-12-11
      • 2017-03-24
      相关资源
      最近更新 更多