J2EE 애플리케이션 (WebSphere에서 실행되는 것과 같은)에서을 사용할 때 System.out.println()
텍스트가 표준 출력으로 이동하여 WebSphere 관리 콘솔에서 파일에 맵핑됩니다.
IIS에서 실행되는 것과 같은 ASP.NET 응용 프로그램에서 출력은 Console.WriteLine()
어디로 이동합니까? IIS 프로세스에는 stdin, stdout 및 stderr이 있어야합니다. 그러나 stdout이 Windows 버전의 / dev / null에 매핑되어 있습니까? 아니면 여기서 핵심 개념이 누락 되었습니까?
난 부탁하지 내가 거기에 로그인해야하는 경우 (내가 log4net를 사용)하지만 여기서 출력 이동합니까? 내 최고의 정보는이 토론에서을Console.SetOut()
변경할 수 있다고 말 TextWriter
했지만 콘솔의 초기 값이 무엇인지 또는 런타임 코드의 구성 / 외부에서 설정하는 방법에 대한 질문에는 여전히 대답하지 않았습니다.
답변
당신이 보는 경우 Console
에 클래스 .NET 반사판 , 당신은 프로세스가 연관된 콘솔이 없습니다, 경우에 그것을 찾을 수 있습니다 Console.Out
및 Console.Error
모의 Stream.Null
(A 내부에 랩 TextWriter
의 더미 구현 인) Stream
즉 기본적으로 모든 입력을 무시보고, 출력을 제공하지 않습니다.
따라서 이는 개념적으로와 동일 /dev/null
하지만 구현이 더 간소화됩니다. null 장치에서는 실제 I / O가 발생하지 않습니다.
또한을 호출하는 것 외에 SetOut
기본값을 구성 할 방법이 없습니다.
답변
System.Diagnostics.Debug.WriteLine(...)
대신에 를 사용 Console.WriteLine()
하면 Visual Studio 의 출력 창 에서 결과를 볼 수 있습니다 .
답변
DataContext의 Log 출력을 출력 창으로 변경 하여이 질문을 찾았습니다. 그래서 다른 사람이 똑같이하려고하면, 내가 한 일은 이것을 만들었습니다.
class DebugTextWriter : System.IO.TextWriter {
public override void Write(char[] buffer, int index, int count) {
System.Diagnostics.Debug.Write(new String(buffer, index, count));
}
public override void Write(string value) {
System.Diagnostics.Debug.Write(value);
}
public override Encoding Encoding {
get { return System.Text.Encoding.Default; }
}
}
그 후 발표 : dc.Log = new DebugTextWriter () 출력 창에서 모든 쿼리를 볼 수 있습니다 (dc는 DataContext입니다).
자세한 내용은 다음을 참조하십시오 : http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
답변
IIS Express를 사용하고 명령 프롬프트를 통해 시작하면 DOS 창이 열린 상태로 유지되며 Console.Write
여기에 명령문이 표시됩니다.
예를 들어 명령 창을 열고 다음을 입력하십시오.
"C:\Program Files (x86)\IIS Express\iisexpress" /path:C:\Projects\Website1 /port:1655
C : \ Projects \ Website1에 웹 사이트 디렉토리가 있다고 가정합니다. IIS Express가 시작되고 웹 사이트 디렉토리의 페이지를 제공합니다. 명령 창을 열어두고 출력 정보를 볼 수 있습니다. 이 코드와 함께 default.aspx 파일이 있다고 가정 해 보겠습니다.
<%@ Page Language="C#" %>
<html>
<body>
<form id="form1" runat="server">
Hello!
<% for(int i = 0; i < 6; i++) %>
<% { Console.WriteLine(i.ToString()); }%>
</form>
</body>
</html>
브라우저와 명령 창을 정렬하여 화면에서 모두 볼 수 있도록하십시오. 이제 브라우저에 입력하십시오 : http://localhost:1655/
. 안녕하세요! 웹 페이지에는 있지만 명령 창에는 다음과 같은 내용이 표시됩니다
Request started: "GET" http://localhost:1655/
0
1
2
3
4
5
Request ended: http://localhost:1655/default.aspx with HTTP status 200.0
마크 업의 코드 블록으로 코드를 작성하여 간단하게 만들었지 만 코드 뒤에 또는 코드의 다른 곳 에서 콘솔 문도 여기에 표시됩니다.
답변
System.Diagnostics.Debug.WriteLine(...);
Visual Studio 2008의 직접 실행 창 으로 가져옵니다 .
메뉴 디버그 -> Windows- > 즉시로 이동하십시오 .
답변
기본적으로 콘솔 청취는 없습니다. 디버그 모드로 실행하면 콘솔이 연결되어 있지만 프로덕션 환경에서는 의심의 여지가 없으므로 아무것도 듣고 있지 않으므로 메시지가 이동하지 않습니다.
답변
엄격한 콘솔 응용 프로그램에 있지 않으면 실제로 볼 수 없기 때문에 사용하지 않을 것입니다. 프로덕션에서 켜고 끌 수있는 디버깅 유형 정보에 Trace.WriteLine ()을 사용합니다.