➡️
【Sequelize】ログ出力制御でのDeprecationWarningの対処
概要
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_ENABLED
がtrue
の場合は、Sequelizeがデフォルトで使用しているconsole.logを使用するようにしました。
2024/9/6追記:コードの誤りを修正しました。こちらの回答を参考にしています。
logging: process.env.QUERY_LOGGING_ENABLED === 'true' ? (msg) => console.log(msg) : false,
関数を指定する場合の例については、公式ドキュメントに記載がありますのでご参照ください。
Discussion