我遇到了log4net的問題。我正在開發一個服務應用程序,我一直使用DLL開發一個控制檯應用程序。該dll是自包含的,控制檯應用程序只是調用該服務的啓動方法,以便我可以快速換出Windows服務進行部署。 (沒有權利在我的開發箱上安裝服務,但服務器上有完整的管理員,這是我工作時的安全噩夢,所以不要問)。Log4net適用於控制檯應用程序,但不適用於Windows服務
當在服務器上啓動控制檯應用程序時,log4net的功能就好了。當啓動Windows服務,我得到log4net的日誌這樣的錯誤:
log4net: repository [log4net-default-repository] already exists, using repository type [log4net.Repository.Hierarchy.Hierarchy]
no configuration section <common/logging> found - suppressing logging output
我也是用石英在該項目的另一部分,從而Common.Logging.dll夾中,但加入了常見的配置部分。記錄使用log4net不能解決問題。從我所看到的控制檯應用程序和服務之間的唯一區別是輸出類型。控制檯應用程序和服務都具有相同的packages.config,只包含log4net和僅引用log4net dll和主項目dll的相同引用。
任何幫助追蹤在哪裏看,將不勝感激。
編輯:我使用相同的app.config爲控制檯應用程序和Windows服務命名適當的program.exe.config。
難道服務運行的帳號(可能是「本地服務」)沒有權限寫入日誌文件的文件夾嗎?如果您使用「本地系統」(舊的,不安全的帳戶)更改「本地服務」(默認,安全帳戶),會發生什麼情況?或者,如果刪除舊的日誌文件並允許「本地服務」下的服務創建自己的日誌文件? – Dialecticus
@Dialecticus問題在於log4net甚至沒有初始化嘗試寫入日誌。來自內部log4net調試日誌的錯誤消息至少在該部分清楚。 – WindRaven