OUTPUT TO "logfile.txt".
FOR EACH ...:
...
PUT "Some log data". OUTPUT CLOSE. OUTPUT TO "logfile.txt" APPEND.
...
END.
在某些时候没有找到合适的语句来保存文件。我不想使用UNBUFFERED APPEND
,因为它应该更慢。也许有内置的日志记录工具?也许STREAMS可以帮助我?我的解决方案中的问题是,每次使用语句打开它时都必须指定日志文件名OUTPUT TO
。嵌套过程可能没有关于文件名的线索。
目前的问题仍然模棱两可。
如果你想要一种方法来通过类似于 LOG-MANAGER 的标准"服务"来路由输出,你可以
通过使用- 类的静态成员,
- 通过在持久过程中使用 API 并发布到它,
- 通过在会话超级过程中使用 API 并调用其 API
STREAMS 将为您提供一种方法,将单个过程或类的输出隔离到单个文件,并防止该输出与生产输出混合,但它仅限于当前程序,这意味着它不是作为应用程序范围的日志记录工具的通用解决方案。
没有"保存"选项。
然而。。。您可以使用以下命令强制刷新输出:
put control null(0).
"据说更慢"非常模糊。 是的,可能有更多的 IO 具有无缓冲输出。 但这是否真的重要在很大程度上取决于你在做什么以及如何使用它。 它实际上不太可能重要。
STREAM 肯定会有助于保持事情井井有条,这样您就不必知道嵌套过程中文件的名称。
是的,有内置的日志记录工具。 查看日志管理器系统句柄。
问题中的代码最好写成:
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.