如何将Winston和pm2结合以特定日程安排进行日志记录

问题描述:

我的节点应用程序当前正在使用Winston进行控制台日志记录,但存在各种难以在开发环境中调试的问题。我需要创建一个只记录警告和错误的记录器,并将日志保存到文本文件中。它应该轮换间隔并在每个周日的午夜重新开始。这是使用温斯顿我目前的记录:如何将Winston和pm2结合以特定日程安排进行日志记录

'use strict'; 

const winston = require('winston'); 
const m = require('moment-timezone'); 
let logger = null; 

/** 
* Initializes the logger 
* @param {object} configLogging 
*/ 
module.exports.initialize = function initialize(configLogging) { 
    const dateFormat = 'dddd, MMMM Do YYYY, h:mm:ss a'; 

    logger = new winston.Logger({ 
    transports: [ 
     new (winston.transports.Console)({ 
     name: 'info-console', 
     level: configLogging.level, 
     colorize: true, 
     timestamp: function() { return m.utc().format(dateFormat); } 
     }) 
    ] 
    }); 

    logger.info('Starting logging service'); 
}; 

/** 
* Gets the logger instance 
* @returns {LoggerInstance} winLogger 
*/ 
module.exports.get = function get() { 
    return logger; 
}; 

听说PM2-logrotate的应该可以做我想做的,但我不知道我怎么能集成到我的应用程序。

您需要配置pm2以处理日志轮转。在您的代码中,首先将winston设置为登录到filewinston.transports.File),级别为warn

然后从控制台安装PM2的logrotate:

pm2 install pm2-logrotate

,将其配置:

pm2-logrotate:rotateInterval '0 0 * * 0' //在午夜每个星期天

看到从documentation

开始更多的配置选项你的应用程序:pm2 start,当所有看起来保存配置好:pm2 save