オンラインで調査して見つけた、Windows サービスをログに記録するための次のコードがあります。以下のように初期化される直前に、サービスクラス内で行われます。
public GBBInvService()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("MyLogSource"))
System.Diagnostics.EventLog.CreateEventSource("MyLogSource",
"MyDoLog");
eventLog1.Source = "MyLogSource";
eventLog1.Log = "MyDoLog";
}
ロギング時のコード:
eventLog1.WriteEntry("GBBInvService Service Started");
しかし、私はコンサルタントから反対のアドバイスを受けました。以下の彼のコメント:
サービスが実行時にイベント ソースを作成することは避けたいと思います。これには、サービスを高い特権で実行する必要があります (つまり、実際に必要な以上のコンピューターへのアクセス)。Windows イベント ログ ソースの設定は、実際にはインストール時の作業です。イベント ログ インストーラーをプロジェクト インストーラー ファイルに (サービス インストーラーと共に) 追加すると、イベント ソースが常に存在します。
このアドバイスの問題点は、プロジェクト インストーラー ファイルでログが作成される例を見つけることができなかったことです。また、このログ作成部分をプロジェクト インストーラーに移動しようとしましたが、web サービスの cs ページから eventlog1 を呼び出したり、書き込んだりできません。彼は log4net も提案しましたが、それは私にとって初めてのことであり、把握するのはかなり複雑です。私は最初の Windows サービス プロジェクトを完了したばかりで、まだ Windows サービスに非常に慣れていません。プロジェクト インストーラーでログを作成したり、サービスの cs ページからログに書き込んだり、log4net で頭を上げたりするためのあらゆる種類の指示に非常に感謝しています。