2011-05-31 122 views
3

我們使用Log4Net和FileAppender在進程中記錄錯誤。當這個過程結束時,我們想通過電子郵件發送日誌文件,但是我們無法做到這一點,因爲Log4Net仍然對文件有鎖定,並且我們收到一條消息,說明該文件正在被另一個進程使用。有任何想法嗎?Log4Net - 文件進程鎖定

我們正在使用的配置是這樣的:

<appender name="WarnFileAppender" type="log4net.Appender.FileAppender"> 
    <file value="d:\for-review-log.txt" /> 

    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date %logger - %message%newline" /> 
    </layout> 
    <filter type="log4net.Filter.LevelRangeFilter"> 
     <levelMin value="INFO" /> 
     <levelMax value="WARN" /> 
    </filter> 
    <filter type="log4net.Filter.DenyAllFilter" /> 
    <appendToFile value="false"></appendToFile> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    </appender> 

回答

4

我假設日誌是從某種服務,所以日誌將被鎖定,直到服務正在運行。

您可能想要在讀取文件進行發送時使用共享鎖。

或者您可以複製文件併發送副本。

+0

嗨Alex,日誌來自控制檯應用程序進程,這將鎖定文件。我已經在使用Appender的FileAppender.MinimalLock設置。複製文件可能是一個選項... – 2011-05-31 07:48:15

+0

@Steve Ward - 您是否可以訪問發送日誌的應用程序的代碼?如果是這樣,您可能需要對其進行更改。它不應該計算該文件現在不被使用,因此它可以使用共享鎖讀取文件或執行文件複製。 – 2011-05-31 07:51:41

+0

是的,複製文件似乎工作。謝謝... – 2011-05-31 08:06:40

0

我得到了同樣的問題。當我嘗試使用SMTPmailAppender,但似乎無法以某種方式工作時,Olso flush也不起作用。但是當我使用我自己創建的類來發送電子郵件時,它的工作原理,只有他不添加附件(日誌文件)

+1

爲什麼不把注意力放在你說的一件事上,而不是讓你看起來好像你在這裏沒有答案?這是關於營銷你的答案(積極),而不是像你被困住。 – Drew 2015-12-24 15:05:23