- - PR -
Exceptionについて
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-09-25 17:38
ログ出力する場合は、
ex.Message ではなく ex.ToString が良いでしょう。 | ||||
|
投稿日時: 2007-09-25 18:13
安易に考えるのは反対
log4net や log AB を調べる ポリシーを決めて、適用 | ||||
|
投稿日時: 2007-09-25 18:20
単純には「時と場合による」としか (^^; 「何をエラーとするか」は業務の性質なんかで変わりますし、実際に発生したエラーに対して「どういう対応をするべきか」も同様です。 「SQLServerを使ったVBの入力アプリ」では、いろんなパターンがありすぎて議論が発散してしまいます。 せめてどういう分野のアプリケーションで、オペレータはどんな層なのか、エラー発生時に利用現場にどれくらいの対応が望めるものなのか、とかが分かれば、それっぽい指針が出てくるんじゃないでしょうか。 | ||||
|
投稿日時: 2007-09-25 18:35
Jittaさん、ありがとうございます。
みさなんはlog4netとか使っているのでしょうか? log4netは見てみます。 渋木宏明さん、ありがとうございます。 エラーは詳細に表示させず、ログファイルにて 対応しようかと思います。 ex.ToString をログファイルに 書き込むわけですが プラス、アプリケーション名や時間も 併せて書き込む必要がありますよね? それと、My.Application.Logというものがありますが これを書き込むのか、ex.ToStringを書き込むのか どのような処理方法が多いのでしょうか? | ||||
|
投稿日時: 2007-09-25 19:38
.NETでのログ出力は、
System.Diagnostics.Traceクラスが基本です。 http://msdn2.microsoft.com/ja-jp/library/system.diagnostics.trace(vs.80).aspx はじめからある機能なのですから、これで十分であれば、 これを使うことをお勧めします。 System.Diagnostics下のクラスでは機能不足ならば、これを ラッピングしたクラス群がいくつか提供されています。 代表格が、Logging ABです。 Microsoft patterns and practices->Application Blocks->Logging Application Block http://msdn2.microsoft.com/en-us/library/aa480464.aspx 連載 Enterprise Library概説 拡張性と使いやすさを併せ持つログ出力機能を実装しよう http://www.atmarkit.co.jp/fdotnet/entlib/entlib04/entlib04_02.html
これも、System.Diagnosticsをラップしたものだと思います。 要件に合い、かつ、使いやすいと思うものを選択すればよいの ではないでしょうか。 エンドユーザに見せてはいけないメッセージはログに書いて、 エラーがあったことをユーザインタフェース層にまで伝播させ、 見せてもよいメッセージをユーザインタフェース層で表示する、 という感じの話の流れに賛同します。 という話になってますよね。 例外発生をどこでひろい、どこでログに書くかという点につい ては、場合によっていろいろであって、一律にこれがよいとい うものはないと思っています。 一律にすればよいのであれば、プログラミング言語がこんなに 柔軟性のあるものにはなっていないでしょうしね。 ただ、最近は、ビジネスロジック層のことはビジネスロジック 層で、ユーザインタフェース層のことは、ユーザインタフース 層で、という感じに、各階層の関連がなるべく疎になるように 設計するのがよいものとされていますね。疎結合というやつで す。 _________________ たつごろー codeseek こみゅぷらす | ||||
|
投稿日時: 2007-09-25 20:14
イベントログを使う、という手もあります。 利点は ・扱いが比較的簡単 ・ログファイルのように「どこに作成するか」についてあまり深く悩まなくて良い ・各種監視ツールなどとの連携が容易 などです。 | ||||
|
投稿日時: 2007-09-25 20:48
.NET Framework 2.0 からは、TraceSourceというクラスも提供されてますね。 TraceSource クラス (System.Diagnostics) http://msdn2.microsoft.com/ja-jp/library/system.diagnostics.tracesource(VS.80).aspx TraceSourceを使用してトレースする、ログに書き込む: .NET Tips: C#, VB.NET, Visual Studio http://dobon.net/vb/dotnet/programing/tracesource.html Microsoftは、TraceではなくTraceSourceを使うことを推奨しているようです。(下記ページ参照) 方法 : TraceSource とフィルタをトレース リスナと共に使用する http://msdn2.microsoft.com/ja-jp/library/ms228993(vs.80).aspx _________________ C#と諸々 | ||||
|
投稿日時: 2007-09-25 22:58
すいません、迷ってしまいます。
エラーが発生した時、表示を簡素化するため 原因をつかむのにログファイルに書き込むのが よいと思いました。 連載 Enterprise Library概説 拡張性と使いやすさを併せ持つログ出力機能を実装しよう に使用例が書かれていました。 ex.tostring+アプリケーション名+時間を テキストファイルに書き込むだけの方が なんとなくシンプルに思えたのですが・・ でも、あまりみなさんはこのような 手法はとらないのでしょうか? またイベントログを使う、という手もあります ですがその利点にはひかれます。 具体的な方法を教えて頂けたら 幸いです。 |