我有一个简单的应用程序:
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锁定日志文件,或者至少在删除它们后重新创建它们?
答案 0 :(得分:4)
使用enableFileDelete
设置制作NLog锁定文件:
<target name="logfile" xsi:type="File"
fileName="C:\Logs\log.txt"
keepFileOpen="true"
enableFileDelete="false" />