Web フォーム環境で表示できるトレース ステートメントを記述する方法は知っていますが、Windows フォーム アプリでこれを行うにはどうすればよいですか?
私は静的メソッドの中にいて、それが生成している sql クエリを表示したいと考えています。
messagebox.show にアクセスできません。どのようなオプションがありますか?
最も簡単な方法は、System.Diagnostics.Debug.WriteLine
またはを使用することSystem.Diagnostics.Trace.WriteLine
です。デバッガーが接続されている場合、メッセージは出力ウィンドウに表示されます。それ以外の場合は、DebugViewを実行してメッセージを表示します (ノイズを除外するには、いくつかのフィルター処理を行う必要があります)。
Log4Netを使用できます。
Log4Netは完全にXml構成駆動型であり、非常に高度な拡張性を提供します(新しいアペンダー、フィルター、またはレイアウトを実装するだけです)。
フォームに表示する必要がありますか?そうでない場合は、クエリから Trace.WriteLine() を実行し、DebugViewを使用して確認できます。それが役に立たない場合は、さらに情報が必要だと思います。
System.Diagnostics.Trace クラスはトレース リスナーに書き込みます。
デフォルトのリスナーは、デバッグ時に出力ウィンドウに書き込みます。トレース出力をファイルやイベント ログなどにリダイレクトできるアプリケーション構成ファイルで、他のリスナーを指定できます。
または、Log4Net などのロギング フレームワークを使用します。
グローバル ロギング オブジェクトを使用できます。
enum LogLevel
{
Info,
Warning,
Error
}
delegate void OnLog (string msg, LogLevel level);
interface ILogger
{
void Log(string msg, LogLevel level);
event OnLog;
}
次に、Program クラスの public static メソッドを使用して取得したクラスで ILogger を拡張します。
そして、メイン フォームで、自分自身を OnLog イベントにアタッチし、それを使用して for 自体にメッセージを出力します。あとは、SQL クエリを使用して静的メソッドで Log メソッドを呼び出すだけです。
:)