无法使用 NodeJS 中的 Pino 记录器将日志写入文件

Posted

技术标签:

【中文标题】无法使用 NodeJS 中的 Pino 记录器将日志写入文件【英文标题】:Unable to write the logs to file using Pino logger in NodeJS 【发布时间】:2020-07-28 01:10:38 【问题描述】:

我有一个包含两个主要模块的应用程序。一个是ui-component,另一个是service-component。 ui-component 使用winston logger,service-component 使用pino logger。 pino logger 的链接是https://getpino.io/#/。我尝试使用以下代码,但我看不到日志文件,即使没有生成日志文件。 service-component 用作 ui-component 内部的节点模块,它使用 electron、angular 8 和 NodeJs。当我运行命令yarn start 时,应用程序将运行,我会进行一些验证以查看日志文件中的日志。

请帮助我,我是 NodeJs 的新手,Pino。两种不同的记录器实现是否可能会在 NodeJs 应用程序中产生任何冲突?

//import pino from "pino";
/*const dest = pino.extreme();
export const logger = pino(dest);*/

/*const dest = pino.destination('./logs/log')
export const logger = pino( level: 'info' , dest)*/


export const logger = require('pino')()
const tee = require('pino-tee')
const fs = require('fs')
const stream = tee(process.stdin)
stream.tee(fs.createWriteStream('myLogFile'), line => line.level >= 0)
stream.pipe(process.stdout)

logger.info('hello world')
logger.error('this is at error level')

【问题讨论】:

【参考方案1】:

这是将 Pino 日志保存在日志文件中的 ts 解决方案。

npm i pino, pino-pretty

安装 pino 和 pino-pretty

import pino from "pino";

const logger = pino(
  
    prettyPrint: 
      colorize: true,
      levelFirst: true,
      translateTime: "yyyy-dd-mm, h:MM:ss TT",
    ,
  ,
  pino.destination("./pino-logger.log")
);


logger.info('hi');

【讨论】:

但是如何将日志写入 file.log 并一起流式传输控制台? 见***.com/questions/63523169/…

以上是关于无法使用 NodeJS 中的 Pino 记录器将日志写入文件的主要内容,如果未能解决你的问题,请参考以下文章

如何轮换使用 pino-multi-stream 生成的日志文件?

如何使用猫鼬删除nodejs中的多条记录

NEDB & Nodejs:使用用户输入在 home.db 中搜索特定记录 - 无法将参数传递给 index.js

将日/夜叠加层添加到带有MVC框架的Google地图中

刷shipid 简便方法

NodeJS 中的 Google App Engine 日志记录