我使用Ent Lib 5登錄到事件日誌。當我在Windows 7機器上運行應用程序時,一切正常。但是當我將它部署在Windows Server 2008上時,它只會停止記錄。它不會向事件日誌寫入任何內容。在兩臺機器上都安裝了Ent Lib 5。企業庫不記錄
那麼你怎麼看?可能是什麼問題?
我使用Ent Lib 5登錄到事件日誌。當我在Windows 7機器上運行應用程序時,一切正常。但是當我將它部署在Windows Server 2008上時,它只會停止記錄。它不會向事件日誌寫入任何內容。在兩臺機器上都安裝了Ent Lib 5。企業庫不記錄
那麼你怎麼看?可能是什麼問題?
這是登錄到Windows事件日誌時的常見情況。這很可能是由於事件源未在Windows Server 2008上註冊的事實。當您在開發計算機上運行它時,您(像大多數開發人員)可能擁有管理員權限,.NET Framework會在第一次自動創建事件源你使用它們。任何沒有管理員權限的應用程序都不能創建事件源,因此記錄失敗。該應用程序繼續運行,因爲Logging塊的理念是不分心的,但沒有記錄。
部署應用程序時,應該包含一個安裝程序類來創建事件源。對於開發,快速解決方案是使用Windows PowerShell。運行提升的PowerShell進程,並使用以下命令:
[System.Diagnostics.EventLog]::CreateEventSource(sourceName, logName)
創建給定日誌的事件源。
或者,在EntLib程序集上運行InstallUtil。有一個隨EntLib一起提供的InstallServices.bat,它將爲您執行此操作。
查看更多的Codeplex discussion。
您還可以使用regedit手動添加事件源。
看到這個MSDN article。
我創建了一個PowerShell腳本來做到這一點。 - 檢查它們是否以升高的權限運行 - 如果不是用戶,則向用戶發出警告 - 檢查以查看事件日誌是否存在 - 創建事件日誌(如果不是) - 將消息顯示爲用戶到結果 https://gist.github.com/3668859:RegisterEventLog.ps1 – Dan 2012-09-07 19:23:22