Где вывод консоли планировщика заданий? (Консольное приложение C#)

Я запускаю консольное приложение на C# и передаю пару аргументов через Task Scheduler. Он работает весь день, загружая данные плоских файлов, созданные другими приложениями, на сервер SQL. Программа прерывается с перебоями, и у меня есть логика Try/Catch, которая записывает информацию об исключении с помощью Console.WriteLine().

Поэтому в основном мне нужно отследить местоположение вывода на консоль, чтобы я мог предпринять шаги для устранения периодических сбоев. Я хорошо осмотрел онлайн, думая, что это должно быть довольно распространенным требованием для диагностики ошибок в запланированных приложениях Task Scheduler. Мой онлайновый поиск выявил несколько вариантов решения, но не дал прямого ответа относительно того, куда выводятся данные консоли при запуске консольного приложения aC# напрямую через планировщик задач.

Два обходных пути, которые я видел:

(1) Получить Task Scheduler для запуска пакетного сценария Windows (файл.bat) вместо непосредственного запуска приложения консоли (файл.exe). Внутри пакетного сценария используйте ">" или ">>", чтобы перенаправить вывод консоли в плоский файл (например, C: \ app \ myapp.exe arg1 arg2> "C: \ log \ myapp_console_output.txt")

(2) Очень похожее решение - заставить планировщик заданий запускать командную строку Windows cmd.exe с параметром / C и передавать аргументы в cmd.exe для запуска моего консольного приложения, а также перенаправлять вывод консоли. например что-то вроде: cmd.exe /C "C:\app\myapp.exe" arg1 arg2 > "C:\log\myapp_console_output.txt"

Хотя я признаю, что описанные выше обходные пути вполне могут помочь мне зафиксировать будущие сбои, на самом деле это не поможет мне отследить выходные данные от периодически возникающих сбоев. Они также выглядят довольно грязными обходными путями для достижения того, что я бы посчитал довольно распространенным стандартным требованием.

Кто-нибудь может подтвердить, что вывод консоли определенно не сохраняется где-то при запуске приложения консоли aC# напрямую через планировщик задач?

1 ответ

Технический ответ заключается в том, что приложения планировщика задач запускаются на отдельном рабочем столе (нулевой сеанс), к которому у вас нет легкого доступа. Раньше было всплывающее окно с доступом, но оно уже давно недоступно.

В сеансе Windows 0 мне удалось получить рабочий стол, хотя рабочего стола не было. Почему?предоставляет более подробную информацию.

Другие вопросы по тегам