You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pino-sentry-transport无法向Sentry发送错误的求助

解决方案

一、修复 pino-sentry-transport 无效问题

先排查并调整以下几个核心点:

  • 确认Sentry DSN完全正确,和生产环境项目的DSN严格匹配,无拼写或大小写错误。
  • 日志调用必须传递Error实例,不能只传字符串。比如要用 logger.error(new Error('具体错误'), '附加描述'),而非 logger.error('错误消息')。
  • 调整格式化配置,确保错误字段的栈信息被保留,避免transport无法识别错误结构。

修改后的配置示例:

import pino from 'pino';

const logger = pino({
  level: 'error',
  formatters: {
    level: (label) => ({ level: label }),
    // 保留错误原生字段,确保transport能识别栈信息
    error: (err) => ({
      type: err.name,
      message: err.message,
      stack: err.stack
    })
  },
  timestamp: () => `,"timestamp":"${new Date().toISOString()}"`,
  transport: {
    target: 'pino-sentry-transport',
    options: {
      sentry: {
        dsn: '你的生产环境Sentry DSN',
        environment: 'production'
      },
      // 明确指定仅发送error及以上级别日志
      level: 'error'
    }
  }
});

// 正确的错误日志调用方式
logger.error(new Error('数据库连接超时'), '用户登录流程异常');

二、修复 pino-sentry 流方式的问题

你当前代码同时配置了transport和stream,导致配置冲突,所以要去掉transport配置,仅保留stream方式,同时确保错误对象的正确传递:

修改后的配置示例:

import pino from 'pino';
import { createWriteStream } from 'pino-sentry';

// 创建Sentry流,指定上报级别为error
const sentryStream = createWriteStream({
  dsn: '你的生产环境Sentry DSN',
  level: 'error',
  environment: 'production'
});

const logger = pino({
  level: 'error',
  formatters: {
    level: (label) => ({ level: label }),
    // 保留错误栈信息的格式化规则
    error: (err) => ({
      type: err.name,
      message: err.message,
      stack: err.stack
    })
  },
  timestamp: () => `,"timestamp":"${new Date().toISOString()}"`
}, sentryStream);

// 捕获错误并上报的正确姿势
try {
  // 模拟业务错误
  throw new Error('订单创建失败');
} catch (err) {
  logger.error(err, '订单处理流程出错');
}

关键注意事项

  • 必须传递Error实例:只有把Error对象作为logger.error()的第一个参数,Sentry才能捕获到完整的错误栈和上下文信息,仅传字符串只会生成无栈的简单消息。
  • 避免配置冲突:不要同时使用transport和stream两种方式,二选一即可,否则会导致级别过滤失效或日志重复上报。
  • 验证依赖版本:确保pino、pino-sentry、pino-sentry-transport版本兼容,比如Pino v8+需要对应版本的transport支持。
  • 检查Sentry项目设置:确认生产环境项目没有拦截错误上报,DSN对应的权限正常。

内容的提问来源于stack exchange,提问作者Slim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 19:05:38