如何在某个时候保存文件而不关闭它


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 的标准"服务"来路由输出,你可以

通过使用
  1. 类的静态成员,
  2. 通过在持久过程中使用 API 并发布到它,
  3. 通过在会话超级过程中使用 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.

相关内容

  • 没有找到相关文章

最新更新