Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 向所有控制台消息添加时间戳大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个完整的,部署的,基于Express的项目,与许多console.log()和console.error()语句。
该项目永远运行,将stdout和stderr指向2个单独的文件

它一切都很好,但现在我缺少时间戳 – 以确切地知道何时发生错误

我可以在我的代码中做某种搜索/替换,或者使用一些npm模块覆盖控制台在每个文件,但我不想触摸每个模型/路由文件,除非我绝对必须。

有一种方法,也许一个Express中间件,将允许我添加一个时间戳每个调用,或者我必须手动添加它吗?

解决方法

事实证明,您可以覆盖app.js文件顶部的控制台函数,并使其在每个其他模块中生效。我得到混合结果,因为我的一个模块是分叉作为一个child_process。一旦我将行复制到该文件的顶部,所有的工作。

为了记录,我安装了模块console-stamp(npm install console-stamp –savE),并将此行添加到app.js和childProcess.js的顶部:

// add timestamps in front of log messages
require('console-stamp')(console,'[HH:MM:ss.l]');

我的问题是,连接日志记录器的日期格式使用UTC格式,而不是我在其他控制台调用中使用的格式。这很容易通过注册我自己的时间格式(作为副作用,要求控制台邮票附带的日期格式模块,而不是安装另一个)修复:

// since logger only returns a UTC version of date,I'm defining my own date format - using an internal module from console-stamp
express.logger.format('mydate',function() {
    var df = require('console-stamp/node_modules/dateformat');
    return df(new Date(),'HH:MM:ss.l');
});
app.use(express.logger('[:mydate] :method :url :status :res[content-length] - :remote-addr - :response-time ms'));

现在我的日志文件看起来有组织(更好,但可剖析):

[15:09:47.746] staging server listening on port 3000
[15:09:49.322] connected to database server xxxxx successfully
[15:09:52.743] GET /product 200 - - 127.0.0.1 - 214 ms
[15:09:52.929] GET /stylesheets/bootstrap-cerulean.min.css 304 - - 127.0.0.1 - 8 ms
[15:09:52.935] GET /javascripts/vendor/require.js 304 - - 127.0.0.1 - 3 ms
[15:09:53.085] GET /javascripts/product.js 304 - - 127.0.0.1 - 2 ms
...

大佬总结

以上是大佬教程为你收集整理的node.js – 向所有控制台消息添加时间戳全部内容,希望文章能够帮你解决node.js – 向所有控制台消息添加时间戳所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。