When initializing Sequelize, add:
import { Sequelize } from "sequelize";
import logger from "../utils/logger.js";
const sequelize = new Sequelize({
dialect: "postgres",
host: process.env.DB_HOST,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
database: process.env.DB_DATABASE,
port: Number(process.env.DB_PORT),
logging: (msg) => logger.debug(msg), // ✅ Log queries using standardized logger
benchmark: true, // ✅ Shows execution time
});
benchmark: true Does?It prints execution time for every query, example:
Executed (default): SELECT * FROM users; Elapsed time: 34ms
This is extremely important in performance monitoring.
We’ll use Winston (production standard):
npm install winston
utils/logger.jsimport winston from "winston";
const logger = winston.createLogger({
level: process.env.LOG_LEVEL || "info",
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json() // ✅ structured logs
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: "logs/app.log" }),
],
});
export default logger;
Because in production monitoring tools (Datadog, Grafana Loki, ELK Stack):
Install request logger:
npm install morgan