1

カスタム log.js ファイルを使用して 2 つの異なるファイルにログインし、異なるモジュール間で 1 時間ごとにログをローテーションするように winston を構成しました。

Log.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);

1 時間後、メモリ使用量を上から順に見ると、EC2 で 3 GB 以上の RAM が消費されていることがわかります (ほとんどの部分がキャッシュされていることが示されています)。これにより、アプリケーション全体のレイテンシが増加します。

winston を削除すると、アプリケーションは正常に動作し、合計メモリは常に約 1.4 ~ 1.5 GB になります。

この状況を打破する方法はありますか。

私のログファイルは 1 時間あたり約 2Gb で、gzip を使用してファイルを圧縮し、aws cli を使用して s3 に送信しています。

4

0 に答える 0