写入标准错误

时间:2016-01-26 00:03:05

标签: stderr progress-4gl openedge

我正在编写一个正在进行中的小程序,需要将错误消息写入系统的标准错误。有什么方法,如果可能的话,我可以用来打印到标准错误吗?我正在使用OpenEdge 11.3。

4 个答案:

答案 0 :(得分:1)

Progress没有提供写入stderr的方法 - 我能想到的最简单的方法是通过一个外部程序输出,该程序接受stdin并将其回显给stderr。

答案 1 :(得分:1)

在Windows(10.2B +)上,您可以使用.NET:

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

一起
prowin32 2> stderr.out

答案 2 :(得分:0)

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

来自文档:

  

对于交互式或批处理客户端,WRITE-MESSAGE()方法将日志条目写入由LOGFILE-NAME属性或客户端日志记录(-clientlog)启动参数指定的日志文件。对于WebSpeed代理和AppServer服务器,WRITE-MESSAGE()方法将日志条目写入服务器日志文件。对于DataServers,WRITE-MESSAGE()方法将日志条目写入DataServer Logging(-dslog)启动参数指定的日志文件。

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系统的很多选项,要显示的消息,放置文件的位置等。

答案 3 :(得分:0)

没有简单的方法,但在unixen中,你总能做一些像(未经测试的):

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

或者 - 并且此已经过测试 - 如果您只是希望批处理模式程序中的错误消息转到标准输出那么

output through "tee" ...

......绝对有效。