我正在编写一个正在进行中的小程序,需要将错误消息写入系统的标准错误。有什么方法,如果可能的话,我可以用来打印到标准错误吗?我正在使用OpenEdge 11.3。
答案 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" ...
......绝对有效。