Progress 写入系统标准错误

Write to the system's standard error in Progress

我正在编写一个需要向系统 standard error 写入错误消息的小程序。我可以使用哪些简单的方法来打印到标准错误?

我正在使用 OpenEdge 11.3.

Progress 不提供写入 stderr 的方法 - 我能想到的最简单的方法是 output-through 一个接受 stdin 并将其回显到 stderr 的外部程序。

启用 Windows (10.2B+) 后,您可以使用 .NET:

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

连同

prowin32 2> stderr.out

您可以查看 LOG-MANAGER:WRITE-MESSAGE。它不会记录到标准输出或标准错误,而是记录到 client-specific 日志。在任何情况下都应该监视此日志(特别是如果客户端是应用程序服务器)。

来自文档:

For an interactive or batch client, the WRITE-MESSAGE( ) method writes the log entries to the log file specified by the LOGFILE-NAME attribute or the Client Logging (-clientlog) startup parameter. For WebSpeed agents and AppServer servers, the WRITE-MESSAGE() method writes the log entries to the server log file. For DataServers, the WRITE-MESSAGE() method writes the log entries to the log file specified by the DataServer Logging (-dslog) startup parameter.

LOG-MANAGER:WRITE-MESSAGE("Got here, x=" + STRING(x), "DEBUG1").

将在日志中写入:

[04/12/05@13:19:19.742-0500] P-003616 T-001984 1 4GL DEBUG1    Got here, x=5

关于LOG-MANAGER系统、要显示的消息、文件的放置位置等有很多选项

没有简单的方法,但在 Unixen 中你总是可以使用 OUTPUT THROUGH(未测试)来做这样的事情:

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

或者——这个测试的——如果你只是想让来自batch-mode程序的错误消息成为标准输出那么

output through "tee" ...

...绝对有效。