如何在 Next.js (TypeScript) Monorepo 中实现 Pino Logger 以进行客户端和服务器端日志记录?

问题描述 投票:0回答:1

我正在使用 TypeScript 开发一个 Next.js 项目,该项目在 monorepo 中构建,并且我希望集成 Pino 来进行日志记录。我的目标是在客户端和服务器端实现日志记录,但尚未找到有关此特定设置的最佳实践的太多文档。

有人可以提供有关如何在 Next.js (TS) monorepo 中正确设置 Pino 记录器以进行全面日志记录的指导或示例吗?任何关于配置 Pino 以有效记录服务器端操作之外的客户端活动的建议都将特别有价值。

这是我的 pino 配置

`import pino from 'pino';

import GraylogStream from './graylogStream';

const graylogHost = 'host'
const graylogPort = 12201;

const logger = pino(
  {
    level: process.env.LOG_LEVEL || 'info',
    serializers: {
      err: pino.stdSerializers.err,
      req: pino.stdSerializers.req,
      res: pino.stdSerializers.res
    }
  },
  new GraylogStream(graylogHost, graylogPort)
);`
typescript monorepo pino
1个回答
0
投票

我也在这个主题上苦苦挣扎,我正在研究 Next js 14.1 App Router,这就是我实现 Pino 的方式

安装 Pino 和 Pino-pretty

创建Pino.ts文件并添加以下代码

const pino = require('pino');
import { Logger } from 'pino';

export const logger:Logger = pino({
  transport: {
    target: 'pino-pretty',
    options: {
      colorize: true,
    },
  },
  level: process.env.PINO_LOG_LEVEL || 'info',

  redact: [], // prevent logging of sensitive data
});

在你的 next.config.js 中添加这个

 experimental:{
    serverComponentsExternalPackages: ['pino', 'pino-pretty']
},

您还可以创建自定义级别

供参考:https://github.com/pinojs/pino/blob/8786e3acbb0f50eeed13d4d599b4f25b0fa43730/docs/api.md#opt-customlevels

© www.soinside.com 2019 - 2024. All rights reserved.