如何使用Node.js库Winston添加时间戳记?

我想添加时间戳记到日志。 达到这个目标的最好方法是什么?

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

包含Winston时,通常默认添加一个控制台传输。 为了让时间戳在这个默认情况下工作,我需要:

  1. 删除控制台传输并使用时间戳选项再次添加。
  2. 使用时间戳选项设置为true创build您自己的logging器对象。

首先:

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}) ] }); 

一些控制台传输的其他选项可以在这里find:

  • 级别:此传输应logging的消息级别(默认为“debugging”)。
  • silent:布尔标志,指示是否抑制输出(默认为false)。
  • colorize:指示是否应着色输出的布尔标志(默认为false)。
  • timestamp:布尔标志,指示是否应该用时间戳预先输出(默认为false)。 如果指定了函数,将使用它的返回值而不是时间戳。

您可以使用内置的util和永久性的为nodejs服务器实现带时间戳的日志logging。 在启动服务器时,将日志输出添加为参数的一部分:

 forever start -ao log/out.log server.js 

然后你可以在你的server.js中写util

server.js

 var util = require('util'); util.log("something with timestamp"); 

输出将如下所示:out.log文件:

out.log

 15 Mar 15:09:28 - something with timestamp 

虽然我不知道温斯顿,但这是一个build议。 我使用log4js进行日志logging,我的日志默认情况下是这样的

 [2012-04-23 16:36:02.965] [INFO] Development - Node Application is running on port 8090 [2012-04-23 16:36:02.966] [FATAL] Development - Connection Terminated to '127.0.0.1' '6379' 

开发是我的节点进程的环境,[INFO | FATAL]是日志级别

在log4js中可以维护不同的configuration文件。 我有开发和生产configuration文件。 还有像滚动文件appender,控制台appender等日志loggingtypes。作为一个插件,你的日志文件将根据日志级别[轨迹,信息,debugging,错误,致命]彩色;)

log4js将覆盖您的console.log这是一个可configuration的参数现在在0.5以上

有时默认的时间戳格式可能对您不方便。 你可以用你的实现覆盖它。

代替

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

你可以写

 var winston = require('winston'); var logger = new (winston.Logger)({ transports: [ new (winston.transports.Console)({ 'timestamp': function() { return <write your custom formatted date here>; } }) ] }); 

有关详细信息,请参阅https://github.com/winstonjs/winston#custom-log-format

我们可以使用console-stamp将时间戳和日志级别添加到现有控制台: require('console-stamp')(console, '[yyyy-mm-dd HH:MM:ss.l]')

有关详细信息,请参阅https://github.com/starak/node-console-stamp