389 Stimmen

Wohin gehört Console.WriteLine in ASP.NET?

Wenn ich in einer J2EE-Anwendung (z. B. einer, die in WebSphere läuft) System.out.println() Mein Text wird an den Standardausgang gesendet, der von der WebSphere-Administrationskonsole einer Datei zugeordnet wird.

Wo wird in einer ASP.NET-Anwendung (z. B. einer, die in IIS läuft) die Ausgabe von Console.WriteLine() gehen? Der IIS-Prozess muss über stdin, stdout und stderr verfügen; aber ist stdout der Windows-Version von /dev/null zugeordnet, oder übersehe ich hier ein Schlüsselkonzept?

Ich bin nicht fragen ob ich dort protokollieren soll (ich verwende log4net), aber wohin geht die Ausgabe? Meine besten Informationen stammen von dieser Seite Diskussion wo sie sagen Console.SetOut() können die TextWriter aber es hat immer noch nicht die Frage beantwortet, was der anfängliche Wert der Konsole ist, oder wie man ihn in der Konfiguration/außerhalb des Laufzeitcodes einstellt.

7voto

Craig Tyler Punkte 460

Standardmäßig wird die Konsole einfach nicht abgehört. Im Debug-Modus ist eine Konsole angeschlossen, aber in einer Produktionsumgebung ist es so, wie Sie vermutet haben, die Nachricht geht einfach nirgendwo hin, weil nichts abgehört wird.

6voto

Charles Graham Punkte 23517

Sofern Sie nicht in einer strikten Konsolenanwendung sind, würde ich es nicht verwenden, weil man es nicht wirklich sehen kann. Ich würde Trace.WriteLine() für Debugging-artige Informationen verwenden, die in der Produktion ein- und ausgeschaltet werden können.

5voto

Shoaib Khalil Punkte 843

Versuchen Sie, eine Art 'Backend-Debugger' anzuhängen, um Ihre Meldungen oder Daten auf der Konsole oder im Ausgabefenster zu protokollieren, so wie wir es in der Node-Konsole tun können.

System.Diagnostics.Debug.WriteLine("Message" + variable) anstelle von Console.WriteLine()

Auf diese Weise können Sie die Ergebnisse im Ausgabefenster alias Konsole von Visual Studio sehen.

3voto

Brian Griffin Punkte 31

En TraceContext Objekt in ASP.NET schreibt in die DefaultTraceListener die an den Host-Prozess ausgibt Standardausgabe . Anstatt zu verwenden Console.Write() , wenn Sie Trace.Write wird die Ausgabe auf die Standardausgabe des Prozesses geleitet.

Sie könnten die System.Diagnostics.Process Objekt, um den ASP.NET-Prozess für Ihre Website zu erhalten und die Standardausgabe mit dem OutputDataRecieved Veranstaltung.

2voto

mickey Punkte 318

Wenn Sie NLog in Ihrem ASP.net-Projekt verwenden, können Sie eine Ziel des Debuggers :

<targets>
    <target name="debugger" xsi:type="Debugger"
            layout="${date:format=HH\:mm\:ss}|${pad:padding=5:inner=${level:uppercase=true}}|${message} "/>

und schreibt Protokolle für die gewünschten Ebenen in dieses Ziel:

<rules>
    <logger name="*" minlevel="Trace" writeTo="debugger" />

Jetzt haben Sie eine Konsolenausgabe wie bei Jetty im "Output"-Fenster von VS, und stellen Sie sicher, dass Sie im Debug-Modus (F5) arbeiten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X