Sentry、sequelizejs:有没有办法捕获导致错误的SQL语句?

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

Sentry 从失败的续集操作中捕获错误,但该消息是通用的。是否可以捕获导致错误的SQL语句? (以下截图)

Sequelize API 文档并未表明有任何其他属性(如

error.query
?)可以实现我正在寻找的功能。我知道可以在续集中打开语句日志记录,但这只是打印到标准输出。另外,因为有许多查询是异步进行的,所以它们不能全部添加为面包屑或其他东西。

Sentry 似乎没有现成的sequelize 或sqlite3 集成。实际上,如果我知道如何检索该语句,我想我可以将其附加到 Sentry 上下文中。

Sentry 给我的唯一有用的信息是 Sentry 显示的最后一个堆栈跟踪帧是来自我的应用程序的代码。所以我也许可以从代码中推断出该语句是什么样的。但这仍然不如看到实际的声明那么有帮助。这可能吗?

node.js express sqlite sequelize.js sentry
1个回答
0
投票

如果您可以切换到 OpenTelemetry 进行检测,则可以使用此包。
OpenTelemetry 仪器可与 Sentry 配合使用。

https://opentelemetry.io/ecosystem/registry/?s=sequelize
https://www.npmjs.com/package/opentelemetry-instrumentation-sequelize

如果您无法切换仪器包,您可以使用类似的方法通过日志消息获取查询

const sequelize = new Sequelize({
        dialect: 'sqlite',
        storage: ':memory:',
        logging: (msg) => {
            const match = msg.match(/Executing \(.*\)\:(.*)/);
            if (match) {
                console.log(match[1].trim());
            } else {
                console.log(msg);
            }
        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.