簡體   English   中英

pino 在 process.exit() 上丟失日志條目

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM