Я использую winston для регистрации некоторых сообщений. Поскольку сообщение большое, я хочу писать в формате gzip.Как правильно комбинировать объект gzip и filestream?
Конструктор объекта регистратора имеет аргумент потока записи. Это работает, если я прохожу файловый поток к нему:
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?