pino 记录器作为 fastify 插件

发布于 2025-01-09 04:23:06 字数 381 浏览 0 评论 0原文

我已经为 fastify 记录器创建了自己的选项和流:

const logger = pino(
{
  level: 'info',
  ...ecsFormat,
},
pinoMultiStream.multistream([
  { stream: streamToElastic },
  {
    stream: pretty({
      colorize: true,
      sync: true,
      ignore: 'pid',
    }),
  },
]),)

const fastify = Fastify({logger})

现在我想将此选项提取为 fastify 插件,我该如何执行此功能?如果这是不可能的,我该怎么做才能提取此代码?

I have been created my own options and stream for fastify logger:

const logger = pino(
{
  level: 'info',
  ...ecsFormat,
},
pinoMultiStream.multistream([
  { stream: streamToElastic },
  {
    stream: pretty({
      colorize: true,
      sync: true,
      ignore: 'pid',
    }),
  },
]),)

const fastify = Fastify({logger})

now I want to extract this options as fastify plugin, how can I do this functionality? If that’s impossible what can I do to extract this code?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

金橙橙 2025-01-16 04:23:06

您无法将代码封装到 Fastify 插件中,因为当时 Fastify 的记录器已经创建。

在这种情况下,您需要定义自己的逻辑来构建 fastify 服务器的配置,例如装饰器模式。

您将获得的用户体验将类似于:

const decorateLogger = require('my-logger-module')

const applicationConfig = loadAppConfig()

decorateLogger(applicationConfig, options)

const app = Fastify(applicationConfig)

You can't encapsulate your code into a Fastify plugin because Fastify's logger has been already created at that time.

In this case, you need to define your own logic to build the fastify server's configuration such as a decorator pattern.

The user experience you will get would be something like:

const decorateLogger = require('my-logger-module')

const applicationConfig = loadAppConfig()

decorateLogger(applicationConfig, options)

const app = Fastify(applicationConfig)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文