Я пишу небольшую программу в процессе разработки, которая должна написать сообщение об ошибке для стандартной ошибки системы. Какие способы, простые, если это вообще возможно, можно использовать для печати со стандартной ошибкой? Я использую OpenEdge 11.3.Write to Standard-Error
ответ
Когда на Windows (в 10.2B +), вы можете использовать .NET:
System.Console:Error:WriteLine ("This is an error message") .
вместе с
prowin32 2> stderr.out
Прогресс не обеспечивает способ записи в stderr - самый простой способ, с которым я могу думать, - выводить через внешнюю программу, которая принимает stdin и перекликает ее с stderr.
Вы можете посмотреть в LOG-МЕНЕДЖЕР: WRITE-СООБЩЕНИЕ. Он не будет регистрироваться на стандартную или стандартную ошибку, а на конкретный клиентский журнал. Этот журнал должен контролироваться в любом случае (особенно, если клиент является сервером приложений).
Из документации:
Для интерактивного или пакетного клиента, метод WRITE-MESSAGE() записывает журнальные записи в лог-файл, указанный в атрибуте LOGFILE-NAME или Клиента Logging (-clientlog). Для агентов WebSpeed и серверов AppServer метод WRITE-MESSAGE() записывает записи журнала в файл журнала сервера. Для DataServers метод WRITE-MESSAGE() записывает записи журнала в файл журнала, указанный параметром запуска DataServer Logging (-dslog).
LOG-MANAGER:WRITE-MESSAGE("Got here, x=" + STRING(x), "DEBUG1").
запишет это в журнале:
[04/12/[email protected]:19:19.742-0500] P-003616 T-001984 1 4GL DEBUG1 Got here, x=5
Там довольно много вариантов, касающихся системы LOG-МЕНЕДЖЕР, какие сообщения для отображения, где находится файл и т.д.
Нет простого способа, но в unixen вы всегда можете сделать что-то вроде (непроверено):
output through "cat >&2" no-echo unbuffered.
В качестве альтернативы - и это является проверено - если вы просто хотите, сообщения об ошибках программы в пакетном режиме, чтобы перейти в стандартный вывод затем
output through "tee" ...
... определенно работает.
Да, это прекрасно! Хотелось бы, чтобы был способ выполнить этот тип действий с «родным» языком Progress, но это сделало трюк благодарю вас! – PrestonM