Dans une application J2EE (comme celle qui s'exécute dans WebSphere), lorsque j'utilise System.out.println()
, mon texte passe à la sortie standard, qui est mappée à un fichier par la console d'administration WebSphere.
Dans une application ASP.NET (comme celle qui s'exécute dans IIS), où va la sortie de Console.WriteLine()
? Le processus IIS doit avoir un stdin, stdout et stderr; mais stdout est-il mappé à la version Windows de / dev / null ou manque-t-il un concept clé ici?
Je ne demande pas si je dois me connecter là-bas (j'utilise log4net), mais où va la sortie? Ma meilleure information est venue de cette discussion où ils disent Console.SetOut()
peut changer le TextWriter
, mais cela n'a toujours pas répondu à la question sur la valeur initiale de la console, ou comment la définir dans config / en dehors du code d'exécution.
la source
Réponses:
Si vous regardez la
Console
classe dans .NET Reflector , vous constaterez que si un processus n'a pas de console associéeConsole.Out
et qu'ilConsole.Error
est soutenu parStream.Null
(enveloppé à l'intérieur de aTextWriter
), qui est une implémentation factice deStream
qui ignore fondamentalement toutes les entrées, et ne donne aucune sortie.Il est donc conceptuellement équivalent à
/dev/null
, mais la mise en œuvre est plus rationalisée: il n'y a pas d'E / S réelles ayant lieu avec le périphérique nul.De plus, à part appeler
SetOut
, il n'y a aucun moyen de configurer la valeur par défaut.la source
Si vous utilisez
System.Diagnostics.Debug.WriteLine(...)
au lieu deConsole.WriteLine()
, vous pouvez voir les résultats dans la fenêtre Sortie de Visual Studio.la source
J'ai trouvé cette question en essayant de changer la sortie du journal du DataContext dans la fenêtre de sortie. Donc, pour quiconque essaie de faire de même, j'ai créé ceci:
Et après cela: dc.Log = new DebugTextWriter () et je peux voir toutes les requêtes dans la fenêtre de sortie (dc est le DataContext).
Jetez un œil à ceci pour plus d'informations: http://damieng.com/blog/2008/07/30/linq-to-sql-log-to-debug-window-file-memory-or-multiple-writers
la source
TextWriter
?dc.Log = s => Debug.WriteLine(s);
.Si vous utilisez IIS Express et que vous le lancez via une invite de commande, il laissera la fenêtre DOS ouverte et vous verrez
Console.Write
instructions.Ainsi, par exemple, ouvrez une fenêtre de commande et tapez:
Cela suppose que vous disposez d'un répertoire de site Web dans C: \ Projects \ Website1. Il démarrera IIS Express et servira les pages de votre répertoire de site Web. Cela laissera les fenêtres de commande ouvertes et vous y verrez les informations de sortie. Disons que vous aviez un fichier, default.aspx, avec ce code dedans:
Organisez votre navigateur et vos fenêtres de commande pour pouvoir les voir tous les deux à l'écran. Maintenant , tapez dans votre navigateur:
http://localhost:1655/
. Vous verrez Bonjour! sur la page Web, mais dans la fenêtre de commande, vous verrez quelque chose commeJe l'ai rendu simple en ayant le code dans un bloc de code dans le balisage, mais toutes les instructions de la console dans votre code-behind ou n'importe où ailleurs dans votre code s'afficheront également ici.
la source
System.Diagnostics.Debug.WriteLine(...);
l'obtient dans la fenêtre immédiate de Visual Studio 2008.Allez dans le menu Debug -> Windows -> Immediate :
la source
Output
juste à côté duImmediate Window
Merci!Il n'y a tout simplement pas de console qui écoute par défaut. En cours d'exécution en mode débogage, une console est attachée, mais dans un environnement de production, c'est comme vous le soupçonniez, le message ne va nulle part parce que rien n'écoute.
la source
À moins que vous ne soyez dans une application console stricte, je ne l'utiliserais pas, car vous ne pouvez pas vraiment la voir. J'utiliserais Trace.WriteLine () pour les informations de type débogage qui peuvent être activées et désactivées en production.
la source
L'
TraceContext
objet dans ASP.NET écrit dans leDefaultTraceListener
qui sort dans la sortie standard du processus hôte . Plutôt que d'utiliserConsole.Write()
, si vous utilisezTrace.Write
, la sortie ira à la sortie standard du processus.Vous pouvez utiliser l'
System.Diagnostics.Process
objet pour obtenir le processus ASP.NET pour votre site et surveiller la sortie standard à l'aide de l'OutputDataRecieved
événement.la source
s'il vous arrivait d'utiliser NLog dans votre projet ASP.net, vous pouvez ajouter une cible de débogueur :
et écrit des journaux sur cette cible pour les niveaux souhaités:
vous avez maintenant la sortie de la console comme Jetty dans la fenêtre "Sortie" de VS, et assurez-vous que vous exécutez en mode débogage (F5).
la source
C'est déroutant pour tout le monde quand il s'agit d'IISExpress. Il n'y a rien pour lire les messages de la console. Ainsi, par exemple, dans les applications ASPCORE MVC, il est configuré à l'aide de appsettings.json qui ne fait rien si vous utilisez IISExpress.
Pour l'instant, vous pouvez simplement ajouter loggerFactory.AddDebug (LogLevel.Debug); dans votre section Configurer et il vous montrera au moins vos journaux dans la fenêtre Sortie de débogage.
Bonne nouvelle CORE 2.0, tout cela va changer: https://github.com/aspnet/Announcements/issues/255
la source
Mac, en mode débogage, il y a un onglet pour la sortie.
la source
Dans une application ASP.NET, je pense que cela va dans la fenêtre Sortie ou Console qui est visible pendant le débogage.
la source