きな粉もち.net

.NET関連仕事に携わっています。OSSのソースを読んで気がついたことを中心に呟いたりブログに投稿したりしています。最近はUiPathを使ったRPAも研究中。気軽にフォローやツッコミよろしくおねがいします! Gitはここを使っています https://github.com/kinakomotitti

log4net × Deep dive × 環境準備

ログの出力をしたいときによく使うOSSlog4net」。

使い方は知っているけど、

 ・実際に内部でどういうことを行っているか

 ・知っている機能以外に使っていない便利機能はないか

などについて改めて知りたくなりました!

 

ソースコードGitHubで公開されているので、そこからDLして実際にDEBUG実行してログ出力処理の流れを追ってみました。

そんな感じのもろもろメモです。

 

とはいえ、環境がないとデバッグできないので、まず初めに、Deep Dive用のソリューションを用意します。

f:id:kinakomotitti:20171022224314p:plain

 

次にLog4netをこのプロジェクトに参照させます。

f:id:kinakomotitti:20171022225532p:plain

参照後は、log4netで利用する「ログの出力設定」の設定を行う必要があります。

 

「ログの出力設定」は、いろいろなオプションがあるが、今回は以下のようにします。

f:id:kinakomotitti:20171022233542p:plain

TODO : Logger要素とRoot Logger要素の使い分け

TODO : Appender要素の種類(子要素、属性含む)

 

実行する際は、上記設定がどこに記載されているかをlog4netに知らせる必要があります。

その設定は以下の通り。

 

f:id:kinakomotitti:20171022233831p:plain

今回は、app.configに設定を追加しているので、上記の呪文をAssemblyInfo.csに追記します。

本家サイトを見ると、app.configに以下の設定を追記することでも設定が可能だと書いてありました。

f:id:kinakomotitti:20171022234052p:plain

TODO : 上記設定の設定方法確認

以上の設定により、log4netによってログをファイルに出力する準備ができた!

 

ということで、ログを出力します。

ログを出力する実装は以下の通り。

f:id:kinakomotitti:20171022234232p:plain・・・シンプルw

 

これを実行すると・・・始めはなかったログファイルが・・・

f:id:kinakomotitti:20171022234324p:plain

f:id:kinakomotitti:20171022234402p:plain

生成される!

 

 

ということで、今後はこのプロジェクトを使って、実際にログが出力されるまでにlog4net内部で処理が実行されているかについてデバッグ実行しながら見ていきたいと思います!

あと、途中でおもむろに出てきたTODOもそれぞれのタイミグで解決していこうと思います。