0

winstonを使用していくつかのメッセージをログに記録しています。メッセージが大きいので、gzip形式で書きたいと思います。

ロガーオブジェクトのコンストラクターには、書き込みストリームの引数があります。ファイルストリームを渡すと機能します:

var winston = require('winston');
var out = require('fs').createWriteStream("test.log");
var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.File)({
      stream: out,
      json: false
    })
  ]
});
logger.info("test");

で生産test.logします

2013-09-12T07:53:14.795Z - info: test

次のことを示すzlibのドキュメントを読みました。

これは、Gzip/Gunzip、Deflate/Inflate、および DeflateRaw/InflateRaw クラスへのバインディングを提供します。各クラスは同じオプションを取り、読み取り/書き込み可能なストリームです。

私は次のようpipeに組み合わせて使用​​しようGzipとしましたfs

var winston = require('winston');
var out = require('fs').createWriteStream("test.log");
var gzip = require('zlib').createGzip();
gzip.pipe(out, {end : true});
var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.File)({
      stream: gzip,
      json: false
    })
  ]
});
logger.info("test");

ただし、test.log空になります。

gzip と filestream オブジェクトを正しく組み合わせる方法は?

4

1 に答える 1