我怎样才能用温斯顿处理日志记录node.js中时旋转日志 也就是说,我怎么可以创建应用程序每天运行一个新的文件?
var logger = new (winston.Logger)({
transports: [
new (winston.transports.Console)(),
new (winston.transports.File)({ filename: '2012-07-09.log' })
]
});
logger.log('info', 'Test Log Message', { anything: 'This is metadata' });
温斯顿作者和维护者在这里。
登录到一个新的文件,每天是目前开放的功能要求: https://github.com/flatiron/winston/issues/10 。 很想看到有人实现它。
也就是说,还有其他的选择:
文件传输接受最大范围的选择,当超过字节一定的规模,这将旋转日志文件。
还有一个新的传输的开放式拉请求,我还没有机会真正深入到“fileRotate”,这似乎确实这种基于日期的旋转: https://github.com/flatiron/winston /拉/ 120 /文件
该功能是存在,我们在生产,winston.transports.DailyRotateFile使用它:
var timeFormatFn = function() {
'use strict';
return moment().format(cfg.timeFormat);
};
var logger = new(winston.Logger)({
exitOnError: false,
transports: [
new(winston.transports.DailyRotateFile)({
filename: cfg.appLogName,
dirname: __dirname + '/../' + cfg.logsDirectory,
datePattern: cfg.rollingDatePattern,
timestamp: timeFormatFn
}),
new(winston.transports.Console)({
colorize: true,
timestamp: timeFormatFn
})
]
});
据笔者温斯顿- filerotatedate它是:
文件传输的温斯顿允许日志文件,以根据大小和时间进行旋转。
文件传输通过“文件名”选项接受的文件名,并使用该文件作为主日志目标。 如果该文件增长过去的“最大范围”字节,则当前的日志文件重命名和一个新的主日志瓷砖被创建。 重命名的日志文件的名称被格式化为这样的“basenameYYYYMMDD [AZ] .bak的”。
可用选项有:
- 级别:这个运输时应日志信息的级别。
- 沉默:布尔值,指示是否禁止输出。
- 时间戳:布尔标志,指示是否应与时间戳(默认为true)前面加上输出。 如果指定的函数,它的返回值将被用来代替时间戳。
- 文件名:日志文件将输出写入的文件名。
- 目录名称:日志文件将被创建的文件夹。
- MAXSIZE:最大规模的日志文件的字节数,如果超过了大小,然后一个新的文件被创建。
- JSON:如果为true,消息将被记录为JSON(默认为true)。
正如2012年12月18日的,这个功能现在在温斯顿可用的(见https://github.com/flatiron/winston/pull/205 )
您可以使用下面的代码,以每天旋转日志文件:
var winston = require('winston');
require('winston-daily-rotate-file');
var transport = new (winston.transports.DailyRotateFile)({
filename: './log',
datePattern: 'yyyy-MM-dd.',
prepend: true,
level: info
});
var logger = new (winston.Logger)({
transports: [
transport
]
});
logger.info('Hello World!');