2011-12-02 3 views
2

VS 출력 창에 특수 형식을 쓰려면 추적 리스터 (DefaultTraceListener 파생)가 있습니다 (따라서 두 번 클릭 -> 소스 작동으로 이동). 표준 VS 출력 기본 추적 수신기를 제거하고이 수신기로 바꿉니다.
하지만이 긴 형식을 내 콘솔에 표시하고 싶지 않으므로 더 짧은 버전을 제공하기 위해 ConsoleTraceLister에서 파생 된 별도의 ConsoleTraceLister가 있습니다. 문제는 이것도 VS 출력에 씁니다. 따라서 창 추적이 두 배가됩니다.
ConsoleTraceLister 파생 수신기가 VS 출력 창에 쓰지 못하게하는 방법은 무엇입니까?ConsoleTraceListener : VS 출력 창에 쓰지 마십시오.

+0

기본 추적 수신기를 제거 도움이 될 것입니다 경우에 당신이 확실하지 않은 시도 할 수 있습니다 뭔가를해야만합니다. http://msdn.microsoft.com/en-us/library/system.diagnostics.defaulttracelistener.aspx –

+0

@HansPassant 죄송합니다. 이미 기본 추적 수신기를 제거했음을 언급해야합니다. 문제는 내 콘솔 추적 수신기가 VS 출력 창에 씁니다. 명확하게 질문을 업데이트했습니다. – Ricibob

+0

* 별도 리스너 *는 무엇입니까? 이를 막을 수있는 간단한 방법은 Project + Properties, Debug 탭에서 호스팅 프로세스의 실행을 종료하는 것입니다. –

답변

1

// 여기에는의 .config 또는 코드에서 명시 적으로 중,

using System; 
using System.IO; 
using System.Diagnostics; 


public class Test 
{ 
    public static void Main() 
    { 
     TextWriterTraceListener myWriter = new 
     TextWriterTraceListener(System.Console.Out); 
     Debug.Listeners.Add(myWriter); 
     Debug.WriteLine("Test output 1 "); 
     Stream myFile = File.Create("output.txt"); 
     TextWriterTraceListener myTextListener = new 
     TextWriterTraceListener(myFile); 
     Debug.Listeners.Add(myTextListener); 
     Debug.WriteLine("Test output 2 "); 


     if (!EventLog.SourceExists("Demo")) 
     { 
      EventLog.CreateEventSource("Demo", "Demo"); 
     } 


     Debug.Listeners.Add(new EventLogTraceListener("Demo")); 
     Debug.WriteLine("Test output 3 "); 
     myWriter.Flush(); 
     myWriter.Close(); 
     myFile.Flush(); 
     myFile.Close(); 
    } 
} 
+0

고마워요 - Ive가 솔루션을 명확히하기 위해 답을 편집했습니다. 건배. – Ricibob

+0

문제 없습니다. 도움이 될 수있어서 기쁩니다. – MethodMan

관련 문제