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

Node.js中使用Sentry的captureMessage如何修改事件标题?

解决方案:Sentry事件标题自定义与级别显示问题

一、修改事件标题(替换默认的"Error")

你遇到的标题显示为"Error"的问题,是因为直接用captureMessage时,Sentry可能会根据上下文默认生成标题,或是fastify-sentry的封装逻辑导致的。可以通过手动构建事件对象来完全自定义标题,具体做法是改用captureEvent替代captureMessage,直接指定事件的message字段(这就是Sentry列表中显示的标题):

fastify.sentry.withScope(function(scope) {
    scope.setTransactionName('Create Transaction')
    // 保留原有的额外信息设置
    scope.setExtra('Transaction UUID', uuid)
    scope.setExtra('Merchant ID', merchantId)
    scope.setExtra('Body', body)
    scope.setExtra('Transaction ID', transactionId)
    
    // 用captureEvent自定义事件标题与类型
    fastify.sentry.captureEvent({
        message: 'Transaction Log', // 这里设置你想要的标题,比如"Message"或"Log"
        level: 'log'
    })
})

如果坚持使用captureMessage,也可以尝试传入第二个参数指定事件类型,强制标记为消息类事件:

// 第二个参数设为"log",明确事件类型
fastify.sentry.captureMessage(uuid, 'log')

二、修复级别显示为"info"的问题

Sentry Node.js SDK对日志级别的识别有严格的枚举规范,直接传字符串'log'可能不被正确解析,会自动降级为info。你可以使用SDK提供的Level枚举来指定级别,确保对应关系准确:

  1. 先导入Level枚举:
const { Level } = require('@sentry/node');
  1. 在代码中替换为枚举值:
fastify.sentry.withScope(function(scope) {
    scope.setLevel(Level.Log) // 使用枚举值替代字符串
    scope.setTransactionName('Create Transaction')
    // 其他额外信息设置...
    fastify.sentry.captureMessage(uuid, Level.Log)
})

如果不想导入枚举,也可以直接使用SDK认可的级别字符串:'fatal', 'error', 'warning', 'info', 'debug'。若业务场景需要"log"级别,也可以直接在captureEvent中指定level: 'log',部分版本的SDK兼容该值。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:25:19