NodeJS 使用express.logger但编写gzipped日志[关闭]

xxb16uws  于 2023-06-05  发布在  Node.js
关注(0)|答案(1)|浏览(112)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

7天前关闭
Improve this question
我正试图找出如何使express.logger函数将其日志写入gzip文件而不是未压缩的文本。我尝试了以下代码:

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的数据,尽管它在日志操作期间只发送了几个字节。
怎样才是正确的连接方式?关于Nodejs.orgzlib和streams的www.example.com API文档没有给予任何具体的例子来说明如何通过zlib将数据发送到另一个写流,并且记录器只将流作为目标。

gj3fmq9x

gj3fmq9x1#

我认为您的代码应该可以工作,但是zlib在缓冲数据方面非常出色,因此在将日志刷新到文件之前可能需要一些时间。
您可以定期手动刷新:

setInterval(function() {
  logarchive.flush();
}, 1000); // flush once per second

相关问题