Em um aplicativo J2EE (como um em execução no WebSphere), quando eu uso System.out.println(), meu texto sai para o padrão, que é mapeado para um arquivo pelo console administrativo do WebSphere.
Em um aplicativo ASP.NET (como um executado no IIS), para onde vai a saída Console.WriteLine()? O processo do IIS deve ter um stdin, stdout e stderr; mas o stdout está mapeado para a versão do Windows de / dev / null ou estou perdendo um conceito-chave aqui?
Não estou perguntando se devo fazer logon (uso log4net), mas para onde vai a saída? Minhas melhores informações vieram dessa discussão, na qual eles dizem que Console.SetOut()podem mudar o TextWriterarquivo, mas ainda não responderam à pergunta sobre qual é o valor inicial do console ou como configurá-lo em config / fora do código de tempo de execução.
asp.net iis console.writeline
— Kevin Hakanson
Na verdade, ele iria para o STDOUT do processo de trabalho do ASP.NET. Onde isso é apontado, não tenho certeza.
— FlySwat 26/09/08
Essa é a pergunta - para onde vai o STDOUT?
aparentemente ninguém sabe, mas todo mundo usa isso em seus exemplos. wtf
Se você estava procurando propósitos de depuração, consulte a resposta @Greg Bernhardt abaixo.
@KevinHakanson FWIW todos esses anos depois, o stdout para qualquer processo é escolhido por seu pai, o processo que o iniciou. Nesse caso, o pai seria o IIS. Isso pode indicar a direção certa .
Se você observar a Consoleclasse no .NET Reflector , descobrirá que, se um processo não tiver um console associado Console.Oute Console.Errorfor apoiado por Stream.Null(empacotado dentro de a TextWriter), que é uma implementação fictícia Streamque basicamente ignora todas as entradas e não dá saída.
Portanto, é conceitualmente equivalente a /dev/null, mas a implementação é mais simplificada: não há E / S real ocorrendo com o dispositivo nulo.
Além disso, além da chamada SetOut, não há como configurar o padrão.
Use System.Diagnostics.Debug.WriteLine () se você realmente deseja que algo seja gravado na janela Saída, que pode ser exibida durante a depuração.
— 202519
Se você usar em System.Diagnostics.Debug.WriteLine(...)vez de Console.WriteLine(), poderá ver os resultados na janela Saída do Visual Studio.
— Greg Bernhardt
Eu teria feito a mesma pergunta que Kevin, mas esta é a resposta que eu estaria procurando.
— Zasz
Mais uma pequena dica; se você estiver imprimindo uma seqüência de caracteres formatada, use Debug.Print em vez de Debug.WriteLine para evitar um conflito de argumento (consulte social.msdn.microsoft.com/Forums/ar/Vsexpressvcs/thread/… ).
— Nicholas Riley
Observe que o depurador precisa ser anexado para que as mensagens sejam mostradas na janela Saída.
Isso não funciona para o IIS local ou algo assim? Parece que não consigo escrever na saída durante toda a minha vida, apesar do fato de estar começando com F5 (portanto, o depurador está anexado). Eu sei que meu código está sendo executado porque posso escrever em um arquivo.
@ Cosmin Qual arquivo .exe exato que devo anexar no VS?
Eu encontrei essa pergunta tentando alterar a saída de log do DataContext para a janela de saída. Então, para qualquer pessoa que tente fazer o mesmo, o que eu fiz foi criar isso:
E depois disso: dc.Log = new DebugTextWriter () e posso ver todas as consultas na janela de saída (dc é o DataContext).
Dê uma olhada nisto para obter mais informações: http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
— Artur Carvalho
Por que não usar apenas um invólucro estático, considerando que você está agrupando métodos totalmente estáticos? Por que se preocupar em estender TextWriter?
Você também pode usar dc.Log = s => Debug.WriteLine(s);.
Application_Start: System.Console.SetOut (new DebugTextWriter ());
Melhor ainda, Console.SetOut (new DebugTextWriter ());
— Alde
Se você estiver usando o IIS Express e iniciá-lo por meio de um prompt de comando, ele deixará a janela do DOS aberta e você verá Console.Writeinstruções lá.
Por exemplo, abra uma janela de comando e digite:
Isso pressupõe que você tenha um diretório de site em C: \ Projects \ Website1. Ele iniciará o IIS Express e exibirá as páginas no diretório do site. Isso deixará as janelas de comando abertas e você verá as informações de saída lá. Digamos que você tenha um arquivo lá, default.aspx, com este código:
<% { Console.WriteLine(i.ToString()); }%>
Organize o navegador e as janelas de comando para poder vê-los na tela. Agora digite no seu navegador: http://localhost:1655/. Você verá Olá! na página da web, mas na janela de comando você verá algo como
Simplifiquei o código em um bloco de código na marcação, mas qualquer instrução do console no seu code-behind ou em qualquer outro lugar do seu código também será exibida aqui.
+1 Eu sempre uso o IIS Express durante o desenvolvimento por esse motivo. A saída do console é inestimável, usada no back-end como o console javascript no front-end. Economiza muito tempo na depuração, em vez de usar um log do servidor baseado em arquivo. Você não precisa substituir o tratamento de exceção "amigável" - mantenha a página agradável do navegador "oops" e apenas envie a exceção para o console, fácil de ver.
— ingredient_15939
System.Diagnostics.Debug.WriteLine(...);coloca na Janela Imediata no Visual Studio 2008.
Vá para o menu Debug -> Windows -> Immediate :
No meu Visual Studio 2012, segui o que você disse, mas a string apareceu no Outputalém do Immediate WindowThanks!
— WTFZane # 03:
Simplesmente não há console ouvindo por padrão. Executando no modo de depuração, há um console conectado, mas, em um ambiente de produção, é como você suspeitava, a mensagem simplesmente não vai a lugar algum porque nada está escutando.
— Craig Tyler
A menos que você esteja em um aplicativo de console rigoroso, eu não o usaria, porque você realmente não pode vê-lo. Eu usaria Trace.WriteLine () para informações do tipo depuração que podem ser ativadas e desativadas na produção.
Sim, aqui está um bom ponto de partida: msdn.microsoft.com/en-us/library/x5952w0c.aspx
O TraceContextobjeto no ASP.NET grava nas DefaultTraceListenersaídas que saem para a saída padrão do processo host . Em vez de usar Console.Write(), se você usar Trace.Write, a saída irá para a saída padrão do processo.
Você pode usar o System.Diagnostics.Processobjeto para obter o processo ASP.NET do seu site e monitorar a saída padrão usando o OutputDataRecievedevento
— Brian Griffin
se você usou o NLog no seu projeto ASP.net, pode adicionar um destino para o Depurador :
<target name="debugger" xsi:type="Debugger"
layout="${date:format=HH\:mm\:ss}|${pad:padding=5:inner=${level:uppercase=true}}|${message} "/>
e grava logs nesse destino para os níveis que você deseja:
<logger name="*" minlevel="Trace" writeTo="debugger" />
agora você tem saída do console como o Jetty na janela "Saída" do VS e verifique se está executando no modo de depuração (F5).
Isso é confuso para todos quando se trata do IISExpress. Não há nada para ler as mensagens do console. Por exemplo, nos aplicativos ASPCORE MVC, ele configura usando appsettings.json, o que não faz nada se você estiver usando o IISExpress.
Por enquanto, você pode adicionar loggerFactory.AddDebug (LogLevel.Debug); na seção Configurar e, pelo menos, mostrará seus logs na janela Saída de depuração.
Boas notícias, o CORE 2.0 está mudando: https://github.com/aspnet/Announcements/issues/255
— Chris Go
Mac, No modo de depuração, há uma guia para a saída.
— Thushara Buddhika
Em um aplicativo ASP.NET, acho que vai para a janela Saída ou Console, que é visível durante a depuração.