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

Posted

技术标签:

【中文标题】如果文件不存在则创建文件,然后将日志写入其中【英文标题】:Create file if it does not exist, then write logs to it 【发布时间】:2016-06-04 15:59:10 【问题描述】:

尝试建立一个环境:

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

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

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

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

我正在使用 Node v5.0.0

【问题讨论】:

fs.statSync 怎么样? ***.com/a/4482701/4989460 @stdob-- 这就是我将用于检查的内容,关于我如何使用它的任何想法?是否像在 createWriteStream 中引用文件一样简单?现在我可以确保文件已创建? 好的,我明白了。鉴于日志文件可以同时从不同的函数写入,最好创建一个类型为“logger”的对象 - 例如,winston [github.com/winstonjs/…]。 【参考方案1】:

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

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

在这种情况下,您可以通过指定flagscreateWriteStream 为您完成工作。您可能想要:

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

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

【讨论】:

现在很明显,温斯顿是前进的合适方式,谢谢。

以上是关于如果文件不存在则创建文件,然后将日志写入其中的主要内容,如果未能解决你的问题,请参考以下文章

如果目录不存在,则创建一个目录,然后在该目录中创建文件

MATLAB。写入文本文件或创建它,如果它不存在。将图形保存在目录中,如果不存在则创建它

python文本操作

在python中文件打开模式rd➕代表啥意思?

文件操作

如果文件不存在,则创建它并将字符串写入其中。如果确实如此,则将字符串附加到它。工作不正常