В приложении J2EE (например, в WebSphere), когда я использую System.out.println()
, мой текст выводится на стандартный вывод, который отображается в файле консолью администратора WebSphere.
В приложении ASP.NET (например, запущенном в IIS) куда выводится вывод Console.WriteLine()
? Процесс IIS должен иметь stdin, stdout и stderr; но отображается ли стандартный вывод на версию / dev / null для Windows, или мне здесь не хватает ключевой концепции?
Я не спрашиваю, должен ли я войти туда (я использую log4net), но куда идет вывод? Моя лучшая информация пришла из этой дискуссии, где, как они говорят, Console.SetOut()
можно изменить TextWriter
, но он все еще не ответил на вопрос о том, каково начальное значение Консоли, или как установить его в config / за пределами кода времени выполнения.
источник
Ответы:
Если вы посмотрите на
Console
класс в .NET Reflector , то обнаружите, что если процесс не имеет связанной консолиConsole.Out
иConsole.Error
поддерживаетсяStream.Null
(обернутым внутриTextWriter
), который является фиктивной реализацией,Stream
которая в основном игнорирует все входные данные, и не дает вывода.Таким образом, это концептуально эквивалентно
/dev/null
, но реализация более упорядочена: фактического ввода-вывода с нулевым устройством не происходит.Кроме того, кроме вызова
SetOut
, нет способа настроить значение по умолчанию.источник
Если вы используете
System.Diagnostics.Debug.WriteLine(...)
вместоConsole.WriteLine()
, то вы можете увидеть результаты в окне вывода Visual Studio.источник
Я нашел этот вопрос, пытаясь изменить вывод журнала DataContext в окно вывода. Поэтому для всех, кто пытается сделать то же самое, я создал следующее:
И после этого: 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
источник
TextWriter
?dc.Log = s => Debug.WriteLine(s);
.Если вы используете IIS Express и запускаете его из командной строки, окно DOS останется открытым, и вы увидите
Console.Write
там заявления.Например, откройте окно командной строки и введите:
Предполагается, что у вас есть каталог веб-сайта в C: \ Projects \ Website1. Он запустит IIS Express и будет обслуживать страницы в каталоге вашего сайта. Это оставит командные окна открытыми, и вы увидите выходную информацию там. Допустим, у вас там был файл default.aspx с этим кодом:
Расположите ваш браузер и командные окна так, чтобы вы могли видеть их оба на экране. Теперь введите в адресную строку браузера:
http://localhost:1655/
. Вы увидите Привет! на веб-странице, но в командной строке вы увидите что-то вродеЯ сделал это просто, разместив код в блоке кода в разметке, но любые операторы консоли в вашем коде или где-либо еще в вашем коде также будут отображаться здесь.
источник
System.Diagnostics.Debug.WriteLine(...);
получает это в Немедленное Окно в Visual Studio 2008.Зайдите в меню Debug -> Windows -> Немедленно :
источник
Output
только послеImmediate Window
Спасибо!По умолчанию просто нет прослушивания консоли. При работе в режиме отладки подключена консоль, но в производственной среде, как вы и подозревали, сообщение просто никуда не отправляется, потому что ничего не прослушивается.
источник
Если бы вы не были в строгом консольном приложении, я бы не стал его использовать, потому что вы его не видите. Я бы использовал Trace.WriteLine () для информации отладочного типа, которую можно включать и выключать в производственной среде.
источник
TraceContext
Объект в ASP.NET записывает наDefaultTraceListener
какие выходы на хост - процесс стандартный вывод . Вместо использованияConsole.Write()
, если вы используетеTrace.Write
, вывод будет идти к стандартному выводу процесса.Вы можете использовать
System.Diagnostics.Process
объект, чтобы получить процесс ASP.NET для вашего сайта и отслеживать стандартный вывод, используяOutputDataRecieved
событие.источник
если вам довелось использовать NLog в вашем проекте ASP.net, вы можете добавить цель отладчика :
и записывает логи в эту цель для уровней, которые вы хотите:
теперь у вас есть консольный вывод, как у Jetty в окне «Вывод» VS, и убедитесь, что вы работаете в режиме отладки (F5).
источник
Это сбивает с толку всех, когда речь идет о IISExpress. Нечего читать консольные сообщения. Так, например, в приложениях ASPCORE MVC он настраивается с помощью appsettings.json, который ничего не делает, если вы используете IISExpress.
На данный момент вы можете просто добавить loggerFactory.AddDebug (LogLevel.Debug); в разделе Configure, и он по крайней мере покажет вам ваши журналы в окне Debug Output.
Хорошие новости CORE 2.0, все это будет меняться: https://github.com/aspnet/Announcements/issues/255
источник
Mac, в режиме отладки есть вкладка для вывода.
источник
Я думаю, что в приложении ASP.NET оно идет в окно «Вывод» или «Консоль», которое отображается во время отладки.
источник