2013-10-04 59 views
1

我想刪除每個應用程序運行之間的Nlog日誌文件,只有當它通過電子郵件發送給我時,否則它應該繼續添加到日誌文件中。我正在使用Outlook通過電子郵件發送文件。我不想使用Smtp,因爲有些網絡會阻塞端口25,然後它不會通過電子郵件發送給我。通過電子郵件成功刪除Nlog日誌文件

問題是當我嘗試刪除日誌文件與File.Delete(日誌文件)是說該文件正在使用aonther進程。如何解鎖或關閉文件以便我使用Outlook通過電子郵件發送(然後重新打開它以便進一步記錄)?

我正在考慮製作日誌文件的副本併發送電子郵件,但我不確定它是否是最好的方式。

Thx任何想法。

回答

1

它不是防止刪除文件的Outlook - 您的應用程序仍在運行,並且記錄到該文件仍然處於活動狀態,因此它是應用程序的Nlog部分,可防止刪除。 告訴nlog使用不同的日誌文件,或者不要記錄(您可以稍後恢復日誌記錄)。

1

默認情況下,nlog不會保持文件打開(文件目標,keepFileOpen)。因此,無論是在應用程序寫入數據時嘗試刪除文件,還是使用該文件的Outlook仍然如此。

首先,您可能希望通過outlook發送一份日誌文件的副本。所以你應該確保原始文件沒有被外部進程鎖定。

其次,您將能夠重新配置當前文件目標以寫入另一個文件(log(n+1).txt或其他東西。在Add, enable and disable NLog loggers programmatically有關於編程配置的一些提示)。所以你會確定應用程序沒有記錄到文件。

然後你就可以刪除它了,我想。

0

選項1:

if(chkLogger.Checked){ 
    NLog.Config.SimpleConfigurator.ConfigureForFileLogging("Logfile.log",NLog.LogLevel.Trace); 
} 
else 
{ 
NLog.Config.SimpleConfigurator.ConfigureForFileLogging("Logfile.log", NLog.LogLevel.Off); 
} 

選項2:LogManager.DisableLogging()和LogManager.EnableLogging()

從網站Stopping-Starting-NLog-on-runtime

相關問題