2011-02-16 22 views
3

Ent Lib 5を使用してイベントログにログを記録しています.Windows 7マシンでアプリケーションを実行するとすべて動作します。しかし、WindowsServer 2008に展開すると、ロギングが停止するだけです。イベントログには何も書き込まれません。両方のマシンでEnt Lib 5がインストールされています。エンタープライズライブラリがログに記録されない

あなたはどう思いますか?何が問題なの?

答えて

7

これは、Windowsイベントログにロギングする場合によく起こります。これは、イベントソースがWindows Server 2008に登録されていないことが原因である可能性があります。devマシンで実行すると、ほとんどの開発者のように管理者権限を持っている可能性が高く、.NETフレームワークは初めてイベントソースを自動的に作成しますあなたはそれらを使用します。管理者権限のないアプリケーションは、イベントソースを作成できないため、ロギングに失敗します。 Loggingブロックの哲学は気を散らすが、何もログに記録されないため、アプリケーションは引き続き実行される。

アプリケーションをデプロイするときは、インストーラークラスを組み込んでイベントソースを作成する必要があります。開発には、Windows PowerShellを使用するという簡単な解決策があります。昇格したPowerShellプロセスを実行し、次のコマンドを使用します。

[System.Diagnostics.EventLog]::CreateEventSource(sourceName, logName) 

特定のログのイベントソースを作成する。

また、EntLibアセンブリにInstallUtilを実行してください。EntLibに付属するInstallServices.batがあります。

この詳細についてはCodeplex discussionをご覧ください。

+1

これを行うためにpowershellスクリプトを作成しました。 - 彼らがシステム特権を実行していることを確認してください - 彼らは ない場合はユーザーに警告 - イベントログが が存在するかどうかを確認します - それは をしない場合、イベントログを作成します - としてユーザーにメッセージを表示します結果に https://gist.github.com/3668859:RegisterEventLog.ps1 – Dan

0

regeditを使用して手動でイベントソースを追加することもできます。

これを参照してくださいMSDN article

関連する問題