Debugging with Logging Libraries
Winston - Professional logging:
const winston = require("winston");
const logger = winston.createLogger({
level: "debug",
format: winston.format.combine(
winston.format.timestamp(),
winston.format.colorize(),
winston.format.printf(({ timestamp, level, message, ...meta }) => {
return `${timestamp} [${level}]: ${message} ${
Object.keys(meta).length ? JSON.stringify(meta, null, 2) : ""
}`;
}),
),
transports: [
new winston.transports.Console(),
new winston.transports.File({ filename: "debug.log", level: "debug" }),
new winston.transports.File({ filename: "error.log", level: "error" }),
],
});
logger.debug("Debug message", { userId: 123, action: "login" });
logger.info("User logged in", { userId: 123 });
logger.warn("Deprecated method called");
logger.error("Failed to connect to database", { error: err.message });