2016-01-26 3 views
0

Я пишу небольшую программу в процессе разработки, которая должна написать сообщение об ошибке для стандартной ошибки системы. Какие способы, простые, если это вообще возможно, можно использовать для печати со стандартной ошибкой? Я использую OpenEdge 11.3.Write to Standard-Error

ответ

1

Когда на Windows (в 10.2B +), вы можете использовать .NET:

System.Console:Error:WriteLine ("This is an error message") . 

вместе с

prowin32 2> stderr.out 
+0

Да, это прекрасно! Хотелось бы, чтобы был способ выполнить этот тип действий с «родным» языком Progress, но это сделало трюк благодарю вас! – PrestonM

1

Прогресс не обеспечивает способ записи в stderr - самый простой способ, с которым я могу думать, - выводить через внешнюю программу, которая принимает stdin и перекликает ее с stderr.

0

Вы можете посмотреть в 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-МЕНЕДЖЕР, какие сообщения для отображения, где находится файл и т.д.

0

Нет простого способа, но в unixen вы всегда можете сделать что-то вроде (непроверено):

output through "cat >&2" no-echo unbuffered. 

В качестве альтернативы - и это является проверено - если вы просто хотите, сообщения об ошибках программы в пакетном режиме, чтобы перейти в стандартный вывод затем

output through "tee" ... 

... определенно работает.