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 オブジェクトを正しく組み合わせる方法は?