9

次のコードを使用してアプリケーションイベントログに書き込むと、すべてが正常に機能します。

EventLog log = new EventLog();
log.Source = "Application";
log.WriteEntry("test message", EventLogEntryType.Error);

MSDNや他のすべてのブログのコードを使用すると、セキュリティエラーが発生します(CreateEventSourceによって発生するため推測しています)。

string sSource = "MyWebService";
string sLog = "myApplication";
string sMsg = errorMessage;

if (!EventLog.SourceExists(sSource))
   EventLog.CreateEventSource(sSource, sLog);

 EventLog.WriteEntry(sSource, sMsg, EventLogEntryType.Error);  

したがって、デフォルトで存在するアプリケーションログに書き込むだけでよい場合、ソースが存在するかどうかを確認する必要がありますか?

EventViewerに書き込む適切な方法は何ですか?

4

6 に答える 6

7

CreateEventSourceメソッドは、イベントログに新しいソースを作成します。これにより、汎用グループに書き込む代わりに、アプリケーション独自のグループにアプリケーションのログを書き込むことができますApplication

イベントソースの作成に使用しているユーザーにイベントソースを作成する権限がないためにエラーが発生する可能性があります。Vista/7OSを使用している場合は、管理者としてプログラムを実行してみてください。

イベントビューアにログインする適切な方法は、ニーズによって異なります。アプリケーションが大量のログメッセージを生成し、このログをアプリケーション固有のコンテナにグループ化する場合は、アプリケーション固有のログイベントソースを作成して書き込む方がよい場合があります。ログインします。代わりに、アプリケーションが生成するログメッセージが少なく、それらをグループ化する必要がない場合は、汎用Applicationログイベントソースを使用できます...

于 2011-10-31T23:39:25.540 に答える
2

別のソース(SMTP、ファイルなど)にも書き込みたい場合は、log4netを試してみることをお勧めします。

http://logging.apache.org/log4net/release/config-examples.html#eventlogappender

Webアプリの場合:

一般的な使用法:

winforms/windowsサービスの同様のソリューション。

于 2011-10-31T23:37:24.913 に答える
2

イベントソースを作成するには、管理者権限が必要です。最初のものでは、カスタムソースを使用していません。

于 2011-10-31T23:39:49.987 に答える
1

ストレートのWriteEntryは、デフォルトのアプリケーションソースに移動します。SourceExistsとCreateEventSourceは、独自のカスタムソースを作成する場合に使用します。これにより、イベントビューアでログエントリを簡単に見つけることができます。

そして、はい、他の人が述べているように、顧客イベントソースを作成する権利が必要です。

于 2011-10-31T23:43:26.247 に答える
0

アプリケーションを実行するには、管理者権限が必要です。

アプリケーションのデバッグフォルダに移動し、.exeファイルを右クリックして、管理者として実行することで、アプリケーションを実行できます。

また

VisualStudioを管理者として実行します

于 2017-03-30T08:37:52.190 に答える
-1

イベントソースを作成する必要はありません。言語に依存しない、または置換があるイベントを生成する場合、これは大きな利点になる可能性がありますが、少なくとも.NETプログラムではオプションです(BCLはデフォルトのイベントソースを提供します)。

于 2011-10-31T23:39:38.777 に答える