[英]pino loses log entries on process.exit()
當我的程序通過process.exit()
關閉時(也可能是通過某些信號), pino會丟失一些日志條目,因為它沒有正確刷新它們。
觸發手動沖洗沒有幫助。
我正在使用 pino 6.2.0。
如何防止日志條目丟失?
const pino = require("pino");
const p = pino();
process.on("exit", () => {
console.log("FLUSH");
p.flush();
});
p.info("A"); // logged
p.info("B"); // NOT logged
process.exit(1);
背后故事:
我的 NestJS 模塊中缺少一些依賴項,並將 NestJS 配置為使用我的 pino 記錄器包裝器,如下所示:
const app = await NestFactory.create<NestExpressApplication>(AppModule, {
logger: new PinoLoggerService(),
});
NestJS 只是退出(使用process.exit()
)而沒有告訴我出了什么問題。 刪除logger
選項使 NestJS 打印出所有細節中的違規模塊。
搜索網絡產生了關於 GitHub 問題Pino 5.8.1 無法刷新進程退出日志的評論,其中GitHub 用戶brandondoran指出了解決方案:
使用pino.destination()
它將使用同步寫入,除非您禁用它們,不需要顯式刷新。
請注意,這可能會減慢您的日志記錄。
const pino = require("pino");
const p = pino({}, pino.destination());
p.info("A"); // logged
p.info("B"); // logged as well
process.exit(1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.