如果文件不存在,请创建文件,然后将日志写入其中

Create file if it does not exist, then write logs to it

本文关键字:文件 日志 然后 不存在 创建 如果      更新时间:2023-09-26

尝试设置一个环境:

server.js :当服务器被创建时,它将检查一系列文件是否存在:[api.log,error.log,access.log],如果它们尚不存在,它将创建它们。

routes/api.js :我可以使用启动时创建的文件,在 api 错误时记录错误。

很多建议都围绕着 fs.exists(),现在已经不推荐使用。

我正在努力拼凑事件的顺序,server.js检查文件,采取相应的行动,然后打开流吗?还是必须routes/api.js打开流并在每个错误时写入流?

我正在使用节点v5.0.0

你永远不应该检查文件是否存在,然后根据文件是否存在执行某些操作。 这是一种反模式:在检查文件是否存在和随后执行下一个操作之间,其他一些进程可能会创建或删除文件。 (即使是 * Sync 方法(它们本身就是反模式的)也容易受到此问题的影响。

相反,您应该只做您需要做的任何事情并适当地处理错误。

在这种情况下,您可以通过指定 createWriteStream 来让您完成工作flags。 您可能想要:

  • 'w' - 打开文件进行写入。文件被创建(如果不存在)或截断(如果存在)。
  • 'a' - 打开文件进行追加。如果文件不存在,则创建该文件。

实际上,您应该使用日志记录库。