- PR -

Log4netで、イベントログへ出力する際、イベントIDを設定したい

1
投稿者投稿内容
ねろ
会議室デビュー日: 2006/03/16
投稿数: 3
投稿日時: 2007-11-26 17:54
Log4netでイベントログ出力をしたいのですが、
どうしてもイベントIDを設定する事ができません。
Log4netの設定ファイル中に

<appender name="EventLogAppender" ・・・・・
 ・
 ・
 ・
<EventID value="1000" />
 ・
 ・
 ・
</appender>

とすれば、設定されるような事が記載されているページを
いくつか見かけたのですが、
・・・Cannot find Property [EventID] to set object on ・・・・
といったエラーが出て、要はプロパティとしては設定できないのだと思います。

Log4netでイベントログを出力する際、
イベントIDを設定する方法、ご存知の方がいらっしゃいましたら教えてください。

よろしくお願いします。
凡庸
会議室デビュー日: 2008/01/15
投稿数: 4
投稿日時: 2008-01-15 15:05
どうも、通りすがりのものです。

どなたからも回答ないようなので、
当方で実現できている方法を連携申し上げます。


まず、
ご利用のバージョンを 最新"1.2.10" とお見受けした上で申しますが、
当バージョンのリリース・ビルドでは
うまくイベントIDの設定を認識できないようで、
パッチが公開されています。
詳細は次のURLをご覧ください。
  http://issues.apache.org/jira/browse/LOG4NET-129
で、
上記のパッチを適用して log4net をビルドし直します。

次に、
イベントIDの指定の仕方ですが、
ログ出力の事前に、
log4net.ThreadContext クラスにプロパティの形でセットしてあげないといけないようです。
コーディング例、
  log4net.ThreadContext.Properties("EventID") = 1000
  logger.Error("例外です", ex)
また、
イベントログ・ソースにメッセージファイルを指定し、
そこで該当するIDのメッセージを登録しておかないといけないようです。
メッセージファイルの作り方は、
方々でググれるので、そちらを参考にされると良いでしょう。


以上、お役に立てば幸いです。


【ご注意】
log4net-1.2.10 を個人でビルドする場合、
Visual Studio 2005 以降ですと警告が多数出ますが気にしないようにしましょう。
それから、log4net.snk というキーファイルが必要になるので
ソース・アーカイヴに含まれる "log4net.snk.readme" の内容に対応した上でビルドしてください。
あと、
log4net を利用するアセンブリは全てリビルドする必要があります。
(これが一番骨が折れました。。。)
_________________
ねろ
会議室デビュー日: 2006/03/16
投稿数: 3
投稿日時: 2008-02-25 16:55
お返事遅れて申し訳ござません。
既にあきらめて、イベントログの出力だけは、.NETのクラスを使い出力する事としていました。
今回教えていただいた方法を使い、早速設定してみたところ、出力できることは確認できましたので、log4netで出力するように変更しました。

尚、log4netのバージョンですが、お察しの通り"1.2.10"を使用しております。
ただ、ビルドしなくともイベントログへの出力はできましたので、リリースまでの時間の関係もあり、今のバージョンのままで行きたいと思っております。

一応、負荷テストなども今後実施予定の為、問題が発生するようであれば、パッチをあてるという方向で考えております。

本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)