OUTPUT TO "logfile.txt".
FOR EACH ...:
...
PUT "Some log data". OUTPUT CLOSE. OUTPUT TO "logfile.txt" APPEND.
...
END.
在某些时候没有找到合适的语句来保存文件。我不想使用UNBUFFERED APPEND
,因为它应该更慢。也许有内置的日志工具?也许STREAMS可以帮助我?我的解决方案中的问题是每次用OUTPUT TO
语句打开它时都必须指定日志文件名。嵌套过程可能没有关于文件名的线索。
答案 0 :(得分:1)
目前的问题仍然模棱两可。
如果您想通过类似于LOG-MANAGER的标准“服务”来路由输出,您可以使用
STREAMS将为您提供一种方法,将单个过程或类的输出隔离到单个文件,并保持该输出与生产输出混合,但它仅限于当前程序,这意味着它不是一般解决方案作为应用程序范围的日志工具。
答案 1 :(得分:0)
没有“保存”选项。
但是......你可以用以下方式强制输出:
put control null(0).
“据说慢一点”非常模糊。是的,可能有更多具有无缓冲输出的IO。但这是否真的重要在很大程度上取决于你在做什么以及如何使用它。 非常不太可能真正重要。
STREAM肯定有助于保持组织有序并使其不必在嵌套过程中知道文件的名称。
是的,有内置的日志记录工具。查看LOG-MANAGER系统句柄。
问题中的代码最好写成:
define stream logStream.
output stream logStream to value( "log.txt" ) append unbuffered.
for each customer no-lock:
put stream logStream custName skip.
/* put stream logStream control null(0). */ /* if you want to try fooling with buffered output... */
end.
output stream logStream close.