log4net を使ってみた

.NET の場合、ロギングに使えるオープンソースのプロジェクトってどれくらいあるんだろう。とりあえず「logging .net オープンソース」で Google 先生に聞いてみた。いまいちぱっとしない。 Lu4Net (Logging and Utilities for .NET) なるモノが少し気になったけれども、 Lu4Netの検索結果 10 件中 1 - 10 件目 (0.07 秒) が非常に残念なので見もしないことにする。

いろいろ調べてみたところ、どうやら .NET の場合は Trace, Debug, TraceSwitch などのクラスと config ファイルの設定でロギングを行わせる、という方針らしい。 System.Diagnostics 参照のこと。

それにしてもよくわからない。っていうか眠い。ちょっと睡眠時間たりなかったもよう。

ということで log4net をお試しで使ってみた。 log4j なら何度か使っているからアタマが働かなくても設定ファイルは書けるだろう、という安易な考えで。

オープンソースのロギング・サービス「log4net」を使う − @IT を見ながら App.config と AssemblyInfo.vb の設定を行い、 catch 節に log4net.LogManager.GetLogger("root").Error("えらーだよん", ex) と書いてみた。

ログがさくっと指定したファイルへ出力される。すてき。ログが出るってやっぱりいいなあ。

当たり前って気もするけれど log4j と同じような使用感だったことで安心さえしてしまった。 log4j にだいぶ慣れてたからなあ。

……まあもっとも、今作っているアプリケーションにはまず間違いなく使えないのだけれど。ライセンスの問題もあるし。 log4net って何?って言われそうだし。だいたいロギングっていう発想がシステム全体にほとんどないし。 EventLog を使うわけでもないのに。

ともかくも .NET 標準っぽいロギングをこれから使ってみる予定。そっちならなんとかお許しが出るだろう。 RollingFileAppender の動作ができるといいのだけれどなあ。コード書かないとできなさそうな雰囲気あるんだよなあ。…… EventLog でいっか。

そういえば VB .NET 2003 だと Debug モードでビルドした際は Debug, Trace 両方が使えて*1、 Release モードだと Trace のみ*2になるようだ。コレ、わたしには違和感。だって FATAL > ERROR > WARN > INFO > DEBUG > TRACE って思いこんじゃっているから。思いこみがよくないという話はとりあえず置いておいて。

*1:標準設定の場合

*2:標準設定(ry