2009-06-11 13 views
3

ほとんどの場合、機能の使用方法に関するコード例がほとんどまたはまったくない.NET Frameworkの項目を実行します。他の場面では、多くの例がありますが、それらのどれも処方されているように動作するようには見えません。ConsoleTraceListenerがコンソールに書き込まないのはなぜですか?

ケースインポイント:System.Diagnostics.ConsoleTraceListenerクラス。

私が読んだすべてのもの、私が見てきたすべてのコード例から

、私は以下のようなものをやっているとき:

ConsoleTraceListner listener = new ConsoleTraceListener(); 
listener.WriteLine("Yo"); 

...私はヨ」とポップアップ表示コンソールウィンドウが表示されます"しかし、その期待された出力の代わりに、 "Yo"をVisual Studio Outputに書き込んで、通常のTrace/Debugメッセージを表示します。

私は、適切なリスナーの設定ファイルの設定、Trace.Listenersコレクション、カスタムConsoleTraceListenerタイプへのリスナーの追加など、私がGoogledした例のすべての反復を試みました。私はちょうどバージョンをリリースし、実行可能ファイルを実行してください(これは絶対に何もしません)。

私は行方不明ですか?オリオンエイドリアンの答えにあなたのコメントに答える

答えて

6

...

ConsoleTraceListenterまたはのポイントどのTraceListenerは、それを直接呼び出すことはありません - それは、トレースリスナーのコレクションに追加します残りのようにあなたのコードは、単にたとえばなどTrace.Writeを呼び出すことがあります。

using System; 
using System.Diagnostics; 

class Test 
{ 
    static void Main() 
    { 
     ConsoleTraceListener listener = new ConsoleTraceListener(); 
     Trace.Listeners.Add(listener); 

     DoSomething(); 

     Trace.Flush(); 
    } 

    static void DoSomething() 
    { 
     DoSomethingElse(); 
    } 

    static void DoSomethingElse() 
    { 
     // We don't want to have to pass all our logging 
     // baggage down this far 
     Trace.WriteLine("In DoSomethingElse"); 
    } 
} 

コンパイルTRACEで定義され、コンソールに簡単なロギングを持っていること。個人的に私はlog4netのようなもう少し "oomph"でロギングするのが好きですが、トレースは良いスタートです。

+1

上記のケースでは、ConsoleTraceListenerに1つ、EventLogTraceListenerに1つのTraceリスナーを複数含めることもできます。 – eschneider

+0

@Jon、あなたの入力には多すぎます。しかし、私はあなたが書いたことをほぼそのまま書きました。私のコメントには、「私はGoogledの例を含むすべての繰り返しを試みましたが... Trace.Listenerコレクションにリスナーを追加する...」と述べています。しかし、それは私がそれを期待している方法ではまだ動作しません。私はまだ実際にそれにテキストを含むコンソールをレンダリングするために適切な組み合わせにつまずいた。 – Boydski

+0

@Boydski:最初にトレースリスナーを使うメリットについては、オリオンへのあなたのコメントにしか答えていませんでした。 –

2

TRACEが上記のように定義されていても、コンソールトレース情報は、実行可能ファイルが/target:exeで作成された場合にのみ表示されます。 e。コンソール実行可能ファイルとして。 /target:winexeで作成された場合、コンソールは使用できないため、ConsoleTraceListenerからのトレース出力はありません。

+2

これは唯一の正解です。 ConsoleTraceListenerは標準出力に書き込む必要がありますが、コンソールウィンドウは開きません。アプリケーションをコンソールアプリケーションに変更できない場合は、使用できるWin32 API関数がいくつかあります。 'AllocConsole'を実行すると、コンソールウィンドウが表示されます。 – Vivelin

関連する問題