如何将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设置为登录到file(winston.transports.File
),级别为warn
。
然后从控制台安装PM2的logrotate:
pm2 install pm2-logrotate
,将其配置:
pm2-logrotate:rotateInterval '0 0 * * 0'
//在午夜每个星期天
开始更多的配置选项你的应用程序:pm2 start
,当所有看起来保存配置好:pm2 save