➡️

【Sequelize】ログ出力制御でのDeprecationWarningの対処

2024/07/11に公開

概要

Node.jsのSequelizeライブラリを使用する際、loggingオプションでSQLクエリのログ出力を制御することが可能です。しかし、DeprecationWarningの発生したケースがありましたので、その対処方法について簡単に記します。

DeprecationWarningの発生したケース

開発環境ではログを有効にし、本番環境では無効にしたかったので、環境変数QUERY_LOGGING_ENABLEDを参照し、その値がtrueの場合にのみログを出力するよう設定しました。

const Sequelize = require('sequelize');
const config = {
  database: process.env.DB_DATABASE,
  user: process.env.DB_USER,
  password: process.env.DB_PASSWORD,
  host: process.env.DB_HOST,
  port: process.env.DB_PORT,
  logging: process.env.QUERY_LOGGING_ENABLED === 'true',
};
const sequelize = new Sequelize(config);

対処方法

上記の設定を適用すると、このようなDeprecationWarningが発生しました。

DeprecationWarning: The logging-option should be either a function or false. Default: console.log

関数かfalseを指定する必要があるとのことなので、以下のようにloggingオプションの設定を修正します。QUERY_LOGGING_ENABLEDtrueの場合は、Sequelizeがデフォルトで使用しているconsole.logを使用するようにしました。

2024/9/6追記:コードの誤りを修正しました。こちらの回答を参考にしています。

logging: process.env.QUERY_LOGGING_ENABLED === 'true' ? (msg) => console.log(msg) : false,

関数を指定する場合の例については、公式ドキュメントに記載がありますのでご参照ください。
https://sequelize.org/docs/v6/getting-started/#logging

Discussion