我想弄清楚如何使express.logger函數將其日誌寫入gzip文件,而不是未壓縮的文本。我嘗試下面的代碼:使用express.logger,但寫入gzipped日誌
var logarchive = zlib.createGzip();
var logfile = fs.createWriteStream('./logs/access.log.gz');
logarchive.pipe(logfile);
app.use(express.logger({
format: env.get("logformat", "short"),
stream: logarchive
}));
,但似乎只是設立一個非法的gzip壓縮文件報告了它的數據的184Mb,儘管它只是得到一個記錄操作過程中發送幾個字節。
什麼是正確的方式來連接這些東西?關於zlib和streams的Nodejs.org api文檔沒有給出關於如何通過zlib將數據發送到另一個寫入流的具體示例,並且記錄器僅將流作爲目標。
烏姆並不zlib的需要知道該文件結束。你如何壓縮層出不窮的流? – user568109
你告訴我?這是一個修辭性的問題,你實際上是指「你不能這樣做,因爲zlib無法處理無限期開放的寫入流」,以幫助縮小如何影響gzipped日誌,或者你不知道嗎? –
是的,你壓縮有限的文件。自動化系統記錄器通常做的是旋轉文件然後壓縮它。您需要讀取整個文件進行壓縮。 – user568109