请问 node.js 怎么实现 console.log 同步输出到日志?不要等程序执行完再一次性写入。

2019-11-22 23:30:24 +08:00
 hgjian

node.js 中将 console.log 日志内容输出到文件

async function Get_alldata (  ) {  

        var fs      = require('fs')
        var util    = require('util')
        var logPath = 'upgrade.log'
        var logFile = fs.createWriteStream(logPath, { flags: 'a' })
        console.log = function() {
          logFile.write(util.format.apply(null, arguments) + '\n') // 输出 01、02、03 到文本文件;
          process.stdout.write(util.format.apply(null, arguments) + '\n')
        }

       console.log( ' 01' );   
       console.log( ' 02' );   
       console.log( ' 03' );  
       
       ****** other code ******
       
       return await Get_alldata() ;
}	

上面的代码,只能在 注屏蔽释掉 return await Get_alldata() ; 语句之后,在程序执行完之后,将 01、02、03 一次性的写入到到文本文件?

如果 不注屏蔽释掉 return await Get_alldata() ; 那么 01、02、03 根本就没有写入文本文件;

请问怎么实现 在直接使用 console.log( ) 函数的情况下,实时的将 console.log 输出的 01、02、03 写入到到文本文件?

我实现了 await console.log( ) 的办法,可是太复杂了,使用也不方便;

所以想请教一下这个社区的网友,有没有更好的办法?

附上两个参考文档: Node 中 console.log 的同步实现: https://blog.csdn.net/li420520/article/details/83420994

[Node.js 系统模块系列一] console 模块解读: https://juejin.im/post/5bf2b31f5188252e89668fe1

如果有可以使用的插件,希望能够帮忙给个插件配置文件,谢谢!

10549 次点击
所在节点    Node.js
21 条回复
hgjian
2019-12-02 21:58:26 +08:00
@xcstream pm2 改天试试看,感觉配置项好多

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/622295

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX