IT TIP

추적 출력을 콘솔로 리디렉션

itqueen 2020. 10. 22. 23:50
반응형

추적 출력을 콘솔로 리디렉션


VB.Net에서 작은 일괄 처리 콘솔 앱을 작업하고 있다고 가정 해 보겠습니다. 다음과 같이 앱을 구성하고 싶습니다.

Sub WorkerMethod()
   'Do some work
   Trace.WriteLine("Work progress")

   'Do more work
   Trace.WriteLine("Another progress update")

   '...
End Sub


Sub Main()

   'Do any setup, like confirm the user wants to continue or whatever

   WorkerMethod()     

End Sub

내 출력 Trace대신 사용 Console하고 있습니다. 이는 작업자 메서드가 다른 곳에서 호출되거나 다른 어셈블리에있을 수도 있고 다른 추적 수신기를 여기에 연결할 수 있기를 원하기 때문입니다. 그렇다면 콘솔을 추적에 어떻게 연결할 수 있습니까?

간단한 클래스 (아래에 표시됨)를 정의하고 Trace의 리스너 컬렉션에 인스턴스를 추가하여 이미 수행 할 수 있지만이를 수행하기 위해 더 수용되거나 내장 된 방법이 있는지 궁금합니다.

Public Class ConsoleTrace
    Inherits Diagnostics.TraceListener

    Public Overloads Overrides Sub Write(ByVal message As String)
        Console.Write(message)
    End Sub

    Public Overloads Overrides Sub WriteLine(ByVal message As String)
        Console.WriteLine(message)
    End Sub
End Class

exe의 .config 파일에 다음을 추가 할 수 있습니다.

<?xml version="1.0"?>
<configuration>
    <system.diagnostics>
        <trace autoflush="true">
            <listeners>
                <add name="logListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="cat.log" />
                <add name="consoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

파일에 로깅하는 데 관심이있는 경우를 대비하여 TextWriter도 포함했습니다.


조엘,

앱 구성 방법 대신이 작업을 수행 할 수 있습니다.

Trace.Listeners.Add(new ConsoleTraceListener());

또는 앱의 수명 동안 리스너 추가 또는 제거를 관리하려는 경우 :

ConsoleTraceListener listener = new ConsoleTraceListener();
Trace.Listeners.Add(listener);

Trace.WriteLine("Howdy");

Trace.Listeners.Remove(listener);

Trace.Close();

훌륭한 솔루션이지만 동일한 호출 exe에 의해 다른 dll이 실행되는 상황이 있으므로 호출 exe의 .config 파일을 수정하고 싶지 않습니다. 각 dll이 추적 출력의 자체 변경을 처리하기를 원합니다.

충분히 쉬움 :

Stream outResultsFile = File.Create ("output.txt");
var textListener = new TextWriterTraceListener (outResultsFile);
Trace.Listeners.Add (textListener);

물론 이것은 "output.txt"파일에 Trace 출력을 출력합니다.

참고 URL : https://stackoverflow.com/questions/198322/redirect-trace-output-to-console

반응형