温斯顿:如何旋转日志

Spa*_*ky1 37 node.js flatiron.js

如何在使用Winston处理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' });
Run Code Online (Sandbox Code Playgroud)

ind*_*ero 25

winston作者和维护者在这里.

每天登录到新文件目前是一个开放的功能请求:https://github.com/flatiron/winston/issues/10.很想看到有人实现它.

也就是说,还有其他选择:

  1. File传输接受maxsize选项,当日志文件超过特定大小(以字节为单位)时,该选项将旋转日志文件.

  2. 还有一个带有新传输的开放式拉动请求我没有机会真正深入研究"fileRotate",这似乎是基于日期的轮换:https://github.com/flatiron/winston /拉/ 120 /文件

  • 此传输已添加到其自己的npm模块中:https://github.com/winstonjs/winston-daily-rotate-file (2认同)

小智 24

该功能已存在,我们正在生产中使用它,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
        })
    ]
});
Run Code Online (Sandbox Code Playgroud)

  • 它改变了:https://github.com/winstonjs/winston/blob/d4fdbadc2f4ab8408261497a116ef80e0f9475a0/CHANGELOG.md#user-content-v200--2015-10-29 (2认同)

小智 6

您可以使用以下代码每天轮换日志文件:

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.createLogger)({
    transports: [
      transport
    ]
});
logger.info('Hello World!');
Run Code Online (Sandbox Code Playgroud)