- - PR -
アプリケーションの操作ログ出力の実装方法
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-02-04 20:53
私もセラフさんのおっしゃるように
UI層のログとは、 「ラジオボタンが切り替わった」「ボタンが押された」 というのを想像してしまいます。 ユーザーの動作のログであって、ユーザーの操作(目的)のログにはならないというか。 たとえば同じボタンが押されたとしても、他の要素によって挙動が変わることがほとんどだとおもいますし、UI層で行うのはあまり得策ではないように思います。 別の層の入口や出口か、結果の入れ物(MVCならM)に対してログが出せるようにしこんでおくとか。 | ||||
|
投稿日時: 2009-02-05 09:49
バリデーション&トレーサビリティ(GLP/CSV/FDA 21等)を想定されているのでしょうか? もし想定されているのであれば、「ボタンを押された」等は全く価値がなく意味がありま せん。データの変化を完全に把握できないと意味はないです。付け加えで情報を見たも あまり意味はありません(ログインされているのだから) #私はデータに対して完全履歴で対応しました。 #(例えば過去A氏が登録した画面がリードオンリーで見ることが可能です) [ メッセージ編集済み 編集者: indigo-x 編集日時 2009-02-05 09:50 ] | ||||
|
投稿日時: 2009-02-06 01:06
層をはっきりと分けて、粒度の違う層が混じらないように注意さえすれば、今回の場合、もし外側でログ書き込みをするとすれば、 「『ドメイン』層を呼ぶ人は、かならず Log.Write をしなければならない」 というコーディングルールを決めれば良いと思います。そして、『ドメイン』層が持つメソッドごとに、ログに書く内容(どのメソッド引数とメソッド戻り値を書くか)を決めておきます。こうすれば、コーディングする人によるブレはなくなると思います。 ログのコーディング漏れは私はあってもしかたがないと思います。もしもたかがログを書くのに漏れがあるようでは、ログ以外の肝心の本体のコードですでに盛大に漏れがあり、品質が高くないことが予想されます。 ただ、ログの漏れをどうしても抑えるならば、デザインパターンのどれかを使って、メソッドの入り口や出口でかならずログのコードを通るようにすることも、ある程度パターン化できるのかもしれません。ただ、余計に複雑になるわりにはそれほどの効果はないかもしれません。 それに、上述のようなコーディングルールを決めておけば、『ドメイン』層のメソッドをひとつひとつ検査して、かならず Log.Write が伴っているかを検査すれば、それで漏れがあれば見つけることができ、コードの品質も保てるはずです。 また、内側でログを書くとすれば、『ドメイン』層のメソッドの出口直前で書く、という決めにすれば良いと思います。成功や失敗というメソッド戻り値の情報が要ることもあるので、入り口で書くのは難しいかもしれません。 また、『ドメイン』層は、先日の例で言えば、User のモデルと Book のモデルの双方を関連付ける、コントローラーを作っておき、それを上位層から呼ぶ、というふうにしないと、ログに書くコンテキストが不足するかもしれません。コントローラーのコードをUI層に書いてしまうと、最初のご質問のように、ログに書くものがコーディングする人ごとにブレが出てしまいます。 | ||||
|
投稿日時: 2009-02-06 09:01
ログを出力する目的や考え方によって、実装方法も工夫が必要ということが分かりました。
皆様、大変参考になるアドバイスを頂き、誠にありがとうございます。 自分の開発するアプリケーションにおいて、どのような方法が適切か、じっくり考えてみたいと思います。 |
«前のページへ
1|2|3