【问题标题】:Prevent Sequelize logger from including database credentials防止 Sequelize 记录器包含数据库凭据
【发布时间】:2026-02-20 11:40:01
【问题描述】:

我注意到在 Sequelize 版本 4.4.2 中,日志信息包括创建模型时的数据库凭据。

如果您希望在生产环境中使用查询信息的日志来审计查询或调试错误,这是有问题的。这是我的续集设置:

import Sequelize from 'sequelize';
import { log } from './plugins';

const createConnection = () => new Sequelize(
    process.env.POSTGRES_DB,
    process.env.POSTGRES_USER,
    process.env.POSTGRES_PASSWORD,
    {
        host: process.env.SERVER_POSTGRES_HOST,
        port: process.env.SERVER_POSTGRES_PORT,
        dialect: 'postgres',
        logging: log.trace.bind(log)
});

const connection = createConnection();

编辑:

这似乎与我按照我的方式附加自定义记录器直接相关。它将一个配置对象传递给记录器,其中包括 sequelize 配置,其中还包括数据库凭据。依赖 console.log 不会导致问题。

【问题讨论】:

    标签: javascript node.js sequelize.js bunyan


    【解决方案1】:

    日志配置应该是

    logging: (msg) => logger.trace(msg)
    

    这只会传递 msg 信息而不传递 Sequelize 配置。 见Issue 7821

    【讨论】: