我已将 winston 配置为使用自定义 log.js 文件登录两个不同的文件,以便在不同模块之间每小时轮换日志。
日志.js
var winston = require('winston');
// setup winston for request log
winston.loggers.add('request', {
transports: [
// Setup your shared transports here for request log
new (winston.transports.DailyRotateFile)({
name: '/var/log/nodejs/request.log',
level:'info',
filename : '/var/log/nodejs/request.log' ,
datePattern: '.yyyy-MM-dd-HH'
}),
]
});
// setup winston for response log
winston.loggers.add('response', {
transports: [
// Setup your shared transports here for bids log
new (winston.transports.DailyRotateFile)({
name:'/var/log/nodejs/response.log',
level:'info',
filename : '/var/log/nodejs/response.log' ,
datePattern: '.yyyy-MM-dd-HH'})
]
});
winston.remove(winston.transports.Console);
// to provide the each category across the module ;
module.exports.requestlog = winston.loggers.get('request');
module.exports.responselog = winston.loggers.get('response');
我正在使用这个日志文件来存储来自各种文件的日志,在我们的 server.js 中使用 this.Sample
服务器.js
var requestlog = require('./log.js').requestlog;
var requestObject = {}// large json object with more that 60 key and value
request.info('request',requestObject);
一小时后,顶部的内存使用量显示 EC2 消耗了超过 3gb 的内存。(大部分显示为缓存)这增加了整个应用程序的延迟。
如果我删除了 winston,我的应用程序工作正常,总内存始终在 1.4 到 1.5 GB 左右。
有什么办法可以克服这种情况。
我的日志文件每小时大约 2Gb,我使用 gzip 压缩文件,然后使用 aws cli 将其发送到 s3。