スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: スポンサー広告

ロギング機能って大事。

ログファイル(ロギング機能)って、小規模なアプリならそれほどでもないけど、サーバサイドや中規模以上のアプリには必ず必要となる。
ロギング機能がない事を考えると・・・

1.今アプリが何やってるかわからない。
2.扱っているデータが正しいか確認できない(常にブレイクできる保証はない)。
3.運用時のエラー特定に時間がかかりすぎる。或いはわからない。

仕事にならない・・・でも、ロギング機能があれば、これらが可能になる。
1.今アプリが何やってるかわからない。
→現在実行中のAPIクラス、メソッドを出力する。かかったコスト(時間)も出力できればなおいい。
 実行されたSQLが確実に出力させる(開発時のみ)。
2.扱っているデータが正しいか確認できない(常にブレイクできる保証はない)。
→メソッド開始前に入力データの内容を出力させる事で、INが何かがわかる。
 ただ、運用時は、常々出す必要はないと感じた(エラー発生時のみくらいかな)。
3.運用時のエラー特定に時間がかかりすぎる。或いはわからない。
 例外発生によるエラーは確実にログに出力させる必要がある。できればStackTraceも。
ただし、ログファイルは単に出せば良いってもんじゃない。
多すぎる
 ・肝心な情報が、どうでもいい情報に埋もれる。検索するのが大変になる。見逃すリスクが高くなる。
 ・放置するとHDDを圧迫する。置き場所に困る
 ・アプリケーションのパフォーマンスに影響する(いちいち同期させるので)。
少なすぎる
 ・そもそも欲しい情報が入っていない。
 ・上記の理由から、結局誰も見ないし、活用しないし
 ・何かトラブルがあった時にログファイルを調査しても、結局わからない事が多い。

エラーファイル内を素早く走査できるなら、前者がいいかな。サイズの心配だけだし。
情報の少なすぎるログファイルって、結局出力しない方がマシ。
で、このロギング機能用のライブラリ(プロダクト)として有名なのがlog4net。
Java用のlog4jを.NET用にしたもの。
つい最近、.NET4でビルドされた新バージョン(1.2.11)がリリースされていた。
log4jでもそうだったけど、便利なんです。ええ、とっても。
log4netの環境設定及び実装例
log4netがログを出力できる先は、代表的なもので、
・コンソール
・ファイル
・イベントビューア
・メール
・データベース
だったかな。
開発時は、コンソールとかファイル、運用時は、主にファイル、警告やエラーはメールやイベントビューア、余裕(リソース)があればデータベースにしている。
エラーのメール送信は、コンシューマ向けのアプリでは難しいだろうけど、社内システムであれば、大変便利だ。
ユーザが言わないエラーでも、メールが教えてくれる。ユーザは、致命的なもの(ログインできないとか、保存できないとか)でなければ、言ってくれない事が多い。
log4netが持つメソッドは汎用的なので、ラップするユーティリティクラスを作り、そのクラスに開発向けの目的を持ったメソッドを実装して、それを使うようにしている。
実装するメソッドは以下のようなものになるかな。

Debug:デバッグビルドでの実行にのみ出したいログ
Info:「情報」という扱いのログ。主に開発者、運用者に対する情報である。
Warning:警告レベル。通常の状態ではないけど、業務進行には支障がないレベル。
Error:エラー。明らかに異常事態。現在の業務進行が無理なレベル
Start:メソッド開始を出力するメソッド。上のレベルでいえば、Infoレベル
End:メソッド終了を出力するメソッド。上のレベルでいえば、Infoレベル

後はこれを開発者に使ってもらうだけ。
ログファイルの書式も統一されて、運用時も楽なんだ。
スポンサーサイト
当サイトは基本をすっ飛ばしてます。基本文法等は、@ITをどうぞ
カテゴリー: C# | コメント: 0 | トラックバック: 0


この記事へのコメント

コメントの投稿

非公開コメント


サイドバー背後固定表示サンプル

当ブログに書かれたソースコードは流用自由です。

バグ、スペルミス等はありうる事です。

ご利用の際は自己責任でお願いしますm(_ _)m

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