2012-03-28 22 views
8

我正在使用log4net 1.2.11。所以,日誌記錄工作在開發人員機器上,但是當我在測試服務器上發佈時,它不起作用。遠程調試時,我看到日誌在ILog變量中正確加載,但是當它調用log.Error()時,沒有任何反應,沒有日誌文件,沒有log4net異常。Log4net登錄開發人員計算機,但在測試服務器中不記錄

任何意識?

Obs:我在一個asp.net mvc 3網站中使用log4net。

- 編輯

我把完全控制給大家...什麼都沒有改變,沒有日誌文件。

+0

ApplicationPoolIdentity是IIS 7.5 – 2012-03-28 19:56:47

回答

8

啓用log4net調試以獲取有關該問題的更多信息。如果沒有這個,log4net會自動失敗,並且很難排除配置問題。

檢查How do I enable log4net internal debugging?上log4net的常見問題

考慮到,如果你有權限的問題(如Shyju指出)在IIS 7.5默認的身份是ApplicationPoolIdentity而不是Network Service

Here您對如何指令爲ApplicationPoolIdentity 安全的資源。檢查節「保護資源」

+0

ApplicationPoolIdentity不存在= =( – 2012-03-28 20:06:17

+0

@Vinicius Otton:添加了一個鏈接來幫助您爲ApplicationPoolIdentity – 2012-03-28 20:12:11

+0

創建映像權限我發現用戶NetworkService是可能的用戶訪問IIS池標識。在將IIS池標識更改爲NetworkService後,有任何問題或任何問題需要考慮,因爲ApplicationPoolIdentity不存在 – 2012-03-29 13:09:50

5

檢查該文件夾是否有足夠的權限讓ASP.NET向該文件寫入文件。最有可能的是,如果它在開發機器工作

一些解決方法

在你的開發MACHING刪除日誌文件和文件夾,然後運行它作爲新的,看它是否創建日誌文件的原因。如果是,代碼中沒有任何變化。這應該是一個許可的事情。因此,我們仔細檢查權限

由於Claudio Redi在他的回答中提到,您也可以啓用內部調試log4net以獲取更多信息。 檢查一節「如何啓用log4net的內部調試?」的更多詳細信息,在這個環節上http://logging.apache.org/log4net/release/faq.html

從他們的文檔

爲什麼我不能登錄到一個FileAppender從網絡應用?

該Web應用程序作爲ASPNET上的Web服務器 上的特殊用戶帳戶運行。此帳戶具有有限的權限,可以保護網頁服務器免受攻擊。默認情況下,該帳戶可能沒有 許可權寫入文件系統。確保ASPNET 帳戶有權創建和寫入目錄 中的文件以供選擇進行日誌記錄。

+0

默認的身份,我把完全控制網絡服務並沒有什麼改變......沒有日誌文件。 – 2012-03-28 19:14:22

+0

@ViniciusOttoni:作爲測試權限的一部分,授予「每個人」的權限並查看它是否帶來任何更改。那麼你可以帶走並給予ASP.NET用戶的特定權限 – Shyju 2012-03-28 19:23:17

+0

我把所有人都完全控制,沒有任何變化,沒有日誌文件。 =( – 2012-03-28 19:32:49

1

在我的情況下,內部web.config提及log4.config是錯誤的:

<add key="log4net.Config" value="log4.config"/> 

指向根文件夾,我的開發機器上,log4.config竟是那裏,所以日誌會工作。

但是,在一個版本上,log4.config被複制到bin文件夾,它是唯一一個部署後的位置。

到處更改web.config

<add key="log4net.Config" value="bin/log4.config"/> 

做伐木工作對我來說

相關問題