我想给日志(log)添加时间戳.实现这一目标的最佳方式是什么?

推荐答案

我自己也在处理同样的问题.我有两种方法可以做到这一点.

包括Winston时,它通常默认为添加控制台传输.为了让时间戳在这种默认情况下工作,我需要:

  1. 卸下控制台传输,并使用时间戳选项再次添加.
  2. 创建自己的记录器对象,并将时间戳选项设置为true.

第一个:

var winston = require('winston');
winston.remove(winston.transports.Console);
winston.add(winston.transports.Console, {'timestamp':true});

第二,更干净的 Select :

var winston = require('winston');
var logger = new (winston.Logger)({
    transports: [
      new (winston.transports.Console)({'timestamp':true})
    ]
});

控制台传输的其他一些选项可以在here中找到:

  • 级别:此传输应记录的消息级别(默认为"调试").
  • 静默:指示是否 suppress 输出的布尔标志(默认为false).
  • colorize:布尔标志,指示是否应该为输出着色(默认为false).
  • timestamp:布尔标志,指示是否应该在输出前加上时间戳(默认为false).如果指定了函数,将使用其返回值而不是时间戳.

Node.js相关问答推荐

使用OpenAI API时遇到问题

NodeJS缓冲区大小逻辑:为什么默认是8KB,而不仅仅是数据大小?

在函数上执行 toString 的Typescript 会产生奇怪的字符 (path_1, (0, Promise.writeFile))

Rest-Api动态图像路径和Express除非

为什么我的 Node.js 应用程序在登录时无法正确验证密码(使用 Passport-local 和 bcryptjs)?

使用pm2启动服务器

具有项目外部子路径导入的 Firebase 函数

如何使用 NodeJS 加密模块将 ECDH 密钥转换为 PEM 格式

如何避免在 mongodb 聚合中查找重复结果?

kubernetes 上的 nextjs 无法启动

NPM 错误:修复upstream 依赖冲突安装 NPM 包(云功能)

BrowserRouter工作时为什么HashRouter不工作?

我们如何或可以通过 npm 和 Meteor 使用 node 模块?

制作一个接受命令行参数的脚本

如何undo撤消 Object.defineProperty 调用?

使用 nvm-windows 时更新 npm

为当前目录提供服务的简单文件服务器

Connect/Express 中的session和cookieSession中间件有什么区别?

Node.js, require.main === 模块

Mongoose - 验证邮箱语法