如何使用Node.js库Winston添加时间戳记?
我想添加时间戳记到日志。 达到这个目标的最好方法是什么?
我自己也在处理同样的问题。 有两种方法可以做到这一点。
包含Winston时,通常默认添加一个控制台传输。 为了让时间戳在这个默认情况下工作,我需要:
- 删除控制台传输并使用时间戳选项再次添加。
- 使用时间戳选项设置为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]')