摩根记录器没有正确记录日期或时间

Morgan logger not recording date or time correctly

我的 node.js 应用程序中的记录器没有正确记录日期或时间。我使用 morgan 作为日志记录模块,并使用 moment-timezone 来正确记录我的时区(太平洋标准时间)中的日期和时间。昨天是按照我设置的格式记录日期和时间,今天不是。

这是使用时刻时区的摩根日期令牌的代码:

morgan.token('date', (req, res, tz) => {
    return moment().tz("America/Los_Angeles").format('YYYY-MM-DD, HH:mm a');
});

这是我在 morgan.format() 中使用日期标记的代码:

morgan.format('logFormat', '[:date[America/Los_Angeles]], :resource, :remote-addr, :status, :response-time ms');

昨天,我的请求以这种格式记录:

[2018-07-31,14:57 下午],欢呼,::1、401、104.144 毫秒

今天所有的东西都这样记录:

[YYYY-MM-DD, HH:mm a], hoopla, ::1, 401, 45.995 毫秒

我所做的唯一更改是向应用程序添加新路由,但每个日志记录中间件都根据所使用的路由将日志记录到一个单独的文件。有谁知道为什么我的日期标记不再显示日期?

MomentJS 记录时区的 morgan.token('date'... 部分对我来说没问题!

我敢打赌这是自定义令牌格式中的语法错误。如果您不需要传递参数,根据 the morgan docs,您可以简单地使用带有分号的自定义标记格式,例如 :date。因此,只需尝试使用:

morgan.format('logFormat', ':date, :resource, :remote-addr, :status, :response-time ms');

这个问题帮助我解决了我的问题。谢谢!

这对我来说很合适:

morgan.token('date', (req, res, tz) => {
return moment().tz(tz).format('YYYY-MM-DD HH:mm:ss');
})
morgan.format('myformat', :date[Asia/Taipei] | :method | :url | :response-time ms');
    
app.use(morgan('myformat'))