1

我已将 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。

4

0 回答 0