気まま日記(kimamanikki)

気の向くままに、のんびり更新しますヽ(´∀`)ノ

 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
08


スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

log4netの設定方法

Javaでよく使われるlog4jの.NETバージョンであるlog4netについて。

以前log4jとlog4phpは使ったことがあったので、同じような感覚で使えるかな~と思ったら意外と初期設定がめんどくさい。

1.ライブラリダウンロード
Apacheのlog4netのページからソースコードとdllが含まれたzipがダウンロード可能。
上記サイトから > Get log4net > Download でダウンロードページに行けます。
ちなみにライセンスは「Apache License, version 2.0

2.プロジェクトへの追加
ソリューションエクスプローラのメニューから[参照の追加]を選択し、1.で取得した log4net.dll を追加する。
このとき[参照の追加]が見つからなければ、ソリューションエクスプローラのツールバーから[すべてのファイルを表示]ボタンをクリックしておくと、プロジェクト内に「参照設定」という項目が表示されるのでそこから追加でも可。
というか、後でこの辺の設定ファイルを触るので、基本的に[すべてのファイルを表示]にしておいた方がいいです。
ちなみに、追加する log4net.dll は .NET Framework のバージョンで違うけど、下位互換は出来るみたいなので使用するバージョンが .NET Framework 3.0 でも /2.0/log4net.dll で代用可能。

3.アプリケーション構成ファイルの追加
log4j で言うところの log4j.properties に該当するファイル。
これはプロジェクト直下に「app.config」を作成すればOK。
ソリューションエクスプローラから [追加] > [新しい項目] > [アプリケーション構成ファイル] で生成されるはず。
このファイルを以下の記述に変更。

上記記述では、ソースコードから「SystemLog」と「DebugLog」が出せるような設定になっている。
ログレベルで使い分けする感じ?
ローテーション方法は日付でローテーション。
書式はまぁ試してみて下さい。
ちなみにログの書式の設定パラメータは「log4net SDK Reference」の log4net.Layout.PatternLayout クラスを参照。

4.アセンブリ情報の追加
log4netの初期値を指定する構成ファイルの名前や構成情報について、これらが修正された際に構成情報を再ロードするようにプロジェクトの構成情報の監視を設定する。
これだけ書くと何いってんのかさっぱりわからないが、まぁ要するに上記「app.config」が更新される毎にその情報をロードするって事(だと認識)。
設定方法はソリューションエクスプローラから「My Project」配下の AssemblyInfo.vb の最後に以下の1行を追加。

上記設定でlog4netのデフォルトの設定ファイルとして「app.config」を監視する様に設定したことになる。
この設定ファイルをプロジェクトに依存しない設定ファイル(log4net.xml)として作りたい場合は以下のように記述し、「app.config」を「Log4net.xml」にリネーム。


とまぁとりあえずここまでで設定は完了。

次からは実際の使い方。

ここでようやく使い方か・・・


5.ログ出力のコード
Module内で呼び出す場合は以下の記述。

ちなみに上記の場合、rootで記述したappenderが使用される。
なので、debugを呼び出したい場合は、

となる。
これがModuleでなくクラスで呼び出す場合は、フィールドに以下の記述。

これもファイルを切り替えたい場合は引数をappenderのnameに変えればOK。

後はおなじみの記述ですな。



とりあえずこんな感じ。

これで多分動くはず・・・

LogUtil的なクラスを作ってログファイル管理させたりとかしたらいいかもね。

そういえばVB.NETでオブジェクト指向が取り入れられてるけど、VBプログラマってオブジェクト指向の考え方が出来ない人が多いので、「クラスを作って共通化」とか、「親クラスを継承して共通部分を省略」とかの説明がとてもめんどくさい・・・

分かる人はスッと理解してくれるんだけど、「何のメリットがあるの?」とか、「1モジュールで書いた方が楽だし」とかで中々受け入れてくれない人もいる。

まぁいきなりオブジェクト指向ですよってのも難しいのかもしれませんが


※以下参考ソース
オープンソースのロギング・サービス「log4net」を使う / @IT


Comments

Leave a Comment


Body

カウンター
セルフィ

 
Twitter



 
 
クラッチ作品集
 
 
プロフィール

クラッチ

気まま日記バナー

・クラッチ
このブログの管理人

 
 
管理人へメール
メールフォームを開く
 
 
ブロとも申請フォーム
 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。