- - PR -
デバッグファイルを上書きで作成する
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-28 10:51
こんにちは。
いつもお世話になっております。 C#.NETでWEBアプリの開発をしています。 件名のとおり、デバッグファイルをファイル名が同じ場合は上書きで作成したいと思っています。 現在は、以下のようなソースを書いていて、どんどん追記されていきます。 ------------------------------------------------------------------------------ //デバックファイル出力先 DefaultTraceListener dtl = (DefaultTraceListener)Debug.Listeners["Default"]; dtl.LogFileName = "debug.html"; Debug.WriteLine("処理開始"); Debug.WriteLine("処理終了"); ------------------------------------------------------------------------------ デバックファイルを追記ではなく上書きにする方法をご存知の方がいましたら教えてください。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-10-28 11:26
開発環境用ですか、それとも運用用ですか。
Debugクラスがつかえるのですから開発環境用でしょうか。 運用のログなら慎重に検討する必要があるので、私が書いたことを鵜呑みに しないでください。 ファイルを消して、書き込みすれば上書きになります。 それではだめですか? 今手元に実証環境がないので試せないのですが... トレースリスナを自作するとか、TextWriterTraceListenerを使うとかいう 手も考えられます。 .NET Framework クラス ライブラリ TextWriter クラス http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemiotextwriterclasstopic.asp _________________ たつごろー codeseek こみゅぷらす | ||||||||||||
|
投稿日時: 2005-10-28 17:13
たつごろーさん、返信ありがとうございました。
---------------------------------------------------------------- 引用 開発環境用ですか、それとも運用用ですか。 Debugクラスがつかえるのですから開発環境用でしょうか。 ------------------------------------------------------------------ ちょっと根本的な問題をお聞きしたいのですが、 運用時に、Debugモードでビルドしたものを使うと、問題あるのでしょうか? デバックレベルを作って、テスト時はデバック文を全て出し、 運用時は処理のSTARTとEND、及びエラーメッセ-ジだけを出力するというようにしようと思っていました。 ちょっと調べた限りでは、モードで処理速度の違いはあるようですが。 あと、TextWriterでデバッグファイルを作成する方法も検討したのですが、 using (StreamWriter writer = File.CreateText(FILE_NAME)) { writer.WriteLine( "処理開始") ; writer.WriteLine( "処理終了") ; } という書き方でとりあえずファイルを作ることはできました。 しかし、アプリケーション全体で一つのファイルにログをはきたい場合はどうすればいいのか分かりません。 例えば以下のような場合、 ------------------------------------------------------ public class AAA : System.Web.UI.Page { private void aaa{ writer.WriteLine( "aaa処理開始") ; } } public class BBB : System.Web.UI.Page { pridate void bbb{ writer.WriteLine( "bbb処理開始") ; } } ---------------------------------------------------------- using (StreamWriter writer = File.CreateText(FILE_NAME)) をどのように指定したらいいのですか? すいませんがご教授ください。 よろしくお願いします。 | ||||||||||||
|
投稿日時: 2005-10-28 17:35
あります。下のJittaさんの書き込みを読んで下さい。 モード切替ができるのに活用しないのはもったいないです。
Debug時ではないときの障害を保存したいなら、Debugで出すよりTraceで出したほうがいいでしょう。
トレースリスナを自作するか、TextWriterTraceListenerを使ったものに変えてはいかが、という意味で書きました。生TextWriterを使うのはお勧めではないです。 運用時のログにかかわる実装はいろいろ問題が出てきます。 まずは検索してみてください。いっぱい資料が出てくるはずです。 _________________ たつごろー http://www.codeseek.net MS MVP - Visual Developer Visual Basic (2005/08 - 2006/07) [ メッセージ編集済み 編集者: たつごろー 編集日時 2005-10-30 07:58 ] [ メッセージ編集済み 編集者: たつごろー 編集日時 2005-10-31 10:01 ] | ||||||||||||
|
投稿日時: 2005-10-28 17:57
きっかけとして、市川さんの連載
Enterprise Library概説 拡張性と使いやすさを併せ持つログ出力機能を実装しよう http://www.atmarkit.co.jp/fdotnet/entlib/entlib04/entlib04_01.html は、とても参考になりますよ。 Enterprise Library概説 市川 龍太 http://www.atmarkit.co.jp/fdotnet/entlib/index/index.html _________________ たつごろー codeseek こみゅぷらす | ||||||||||||
|
投稿日時: 2005-10-28 19:20
たつごろーさん、いろいろとご親切にありがとうございました。
参考にさせていただきます。 -------------------------------------------------------------------------------- 引用 Debug時ではないときの障害を保存したいなら、Debugで出すよりTraceで出したほうがいいでしょう。 -------------------------------------------------------------------------------- ちなみに、なぜDebugで出すよりTraceで出したほうがいいのですか? よろしければ、理由を教えていただけないでしょうか? | ||||||||||||
|
投稿日時: 2005-10-28 21:57
ビルドの構成マネージャでDebugとReleaseが切り替えられます。 Debugのときは、DebugとTraceが出力されます。 ReleaseのときはTraceが出力されます。 Traceも不要であれば出力をしないように動的に変更できます。 これを使い分ければ、デバッグに必要な情報の取得をコントロール できることになります。 [HOWTO] Visual C# .NET でのトレースとデバッグの方法 http://support.microsoft.com/default.aspx?scid=kb;ja;815788 Trace クラスと Debug クラスは同じアプリケーション内で、個別または同時に使用できます。Debug ソリューション構成のプロジェクトでは、Trace クラスの出力と Debug クラスの出力は両方ともアクティブなため、すべての Listener オブジェクトに対して両方のクラスからの出力が生成されます。これに対して、Release ソリューション構成のプロジェクトでは、Trace クラスの出力のみ生成されます。Debug クラスのメソッドによる呼び出しはすべて無視されます。 _________________ たつごろー codeseek こみゅぷらす | ||||||||||||
|
投稿日時: 2005-10-28 23:02
ありますですよ!! ASP.NET では、実行時にコンパイルしましすが、その結果にデバッグ用のシンボルが含まれ、メモリ的にも肥大化するし、速度的にも遅くなります。 また、 web.config の中にも設定が…あったと思う。どちらかのデバッグモードでは、リクエストがシングルスレッドで実行されます。 ↑ これは、例外メッセージを外に出さない、ってやつとは違うかったはず。 メインマシンが壊れて^H^H壊してしまったので、かなりあやふや。。。 ___________________________________________________________________ □ written by Jitta on 2005/10/262005/10/28 □ Microsoft MVP :Visual Developer ASP/ASP.NET Oct.2004-Sept.2006 _________________ |