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

时间:2016-02-23 01:08:41

标签: javascript node.js fs

尝试设置以下环境:

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

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

许多建议围绕着fs.exists(),现在已弃用。

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

我使用的是Node v5.0.0

1 个答案:

答案 0 :(得分:7)

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

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

在这种情况下,您可以createWriteStream通过flags'w'为您完成工作。您可能想要:

  
      
  • 'a' - 打开文件进行写作。创建文件(如果它不存在)或截断(如果存在)。
  •   
  • tmp.values.flatMap(_.map{case (x, y, z) => s"$x,$y,$z"}) - 打开要追加的文件。如果文件不存在,则创建该文件。
  •   

实际上,您应该使用a logging library