2013-12-17 3 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" /> 
Смежные вопросы