2017-12-30 128 views
0

私はSlimDXライブラリを含むWCFコンソールアプリケーションを持っています。 SlimDXは、System.Diagnostics.Debugの 'Write'メソッドを使用してログを出力します。私は現在、このログをコンソールで見ることができません。 SlimDXの出力をキャプチャしてコンソールに書きたいと思います。ここでキャプチャSystem.Diagnostics.Debug WCFアプリケーションの出力

は、これまでのところ(動作しない)私の実装です:

FileStream fs = new FileStream("C:/users/paulm/documents/output.txt", FileMode.Create); 

      Writer = new StreamWriter(fs); 
      System.Diagnostics.Debug.Listeners.Add(new System.Diagnostics.TextWriterTraceListener(Writer)); 

この実装はSlimDXからの出力をキャプチャされていません。ここでSlimDXのソースコードは次のとおりです。

#include "ObjectTable.h" 

#include "InternalHelpers.h" 

#include "ComObject.h" 



using namespace System; 

using namespace System::Text; 

using namespace System::Threading; 

using namespace System::Globalization; 

using namespace System::Collections::ObjectModel; 

using namespace System::Collections::Generic; 

using namespace System::Diagnostics; 



namespace SlimDX 

{ 

    static ObjectTable::ObjectTable() 

    { 

     m_Table = gcnew Dictionary<IntPtr, ComObject^>(); 

     m_Ancillary = gcnew Dictionary<IntPtr, List<ComObject^>^>(); 

     m_SyncObject = gcnew Object(); 



     AppDomain::CurrentDomain->DomainUnload += gcnew System::EventHandler(OnExit); 

     AppDomain::CurrentDomain->ProcessExit += gcnew System::EventHandler(OnExit); 

    } 



    ObjectTable::ObjectTable() 

    { 

    } 



    void ObjectTable::OnExit(Object^ sender, EventArgs^ e) 

    { 

     SLIMDX_UNREFERENCED_PARAMETER(sender); 

     SLIMDX_UNREFERENCED_PARAMETER(e); 



     String^ leakString = ReportLeaks(); 

     Debug::Write(leakString); // this is the output I would like to capture 

    } 

私はSlimDX出力をキャプチャするために、WRTのWCFを変更する必要があるだろうかに関してどのような洞察力?

答えて

0

デバッグクラスには、指定されていない場合はデフォルトトレースリスナがあります。だから、Visual Studioの出力ウィンドウでログを見ることができるはずです。 (Debug-> Windows-> Output) しかし、リリースモードの場合、出力ウィンドウには記録されません。デバッグモードでプログラムを実行するか、ファイルの先頭に "#define DEBUG"を追加して実行してください。 お手伝い願います!