2011-08-03 533 views
2

我正在開發一個應該在特定時間運行作業的Windows服務應用程序。每個作業執行週期都使用log4net進行記錄,並且每次執行時都有自己的文件(5個作業每天運行5天,每天將創建25個日誌文件)。停止log4net日誌進程並刪除日誌文件鎖

問題是,如何停止log4net日誌文件鎖定,以便在作業完成執行後,我可以通過電子郵件發送日誌文件並將其從硬盤中刪除?

我需要以編程方式執行此操作,因此配置文件設置在這種情況下不起作用。

我曾經嘗試這樣做,到目前爲止,但它不工作:

logger.Logger.Repository.LevelMap.Clear(); 
    logger.Logger.Repository.LevelMap.Add(logger.Logger.Repository.LevelMap["OFF"]); 

回答

2

如果您使用的是FileAppender,您可以設置LockingModel到MinimalLock:

Dim fileAppenderTrace As New log4net.Appender.RollingFileAppender 
fileAppenderTrace.ImmediateFlush = True 
fileAppenderTrace.LockingModel = New FileAppender.MinimalLock() 
fileAppenderTrace.ActivateOptions() 

這在寫完每個日誌條目後,不會在作業完成後釋放文件,所以我不確定這是否完全是您要查找的內容。

+0

是的,那就是我一直在尋找的東西。現在我將看到上面的代碼的C#版本應該如何。謝謝。 – ThatJoeGuy