Skip to content

Instantly share code, notes, and snippets.

@b4n92uid
Last active August 17, 2021 22:20
Show Gist options
  • Save b4n92uid/44149a8111653c54c992e9457920bb08 to your computer and use it in GitHub Desktop.
Save b4n92uid/44149a8111653c54c992e9457920bb08 to your computer and use it in GitHub Desktop.
[Node] WinstonLogger
import "winston-daily-rotate-file";
import { join } from "path";
import { createLogger, format, transports } from "winston";
const serverFormat = format.printf(info => {
return `${info.timestamp} [${info.label}] ${info.level}: ${info.message}`;
});
function createCustomLogger(label: string, level: string) {
return createLogger({
format: format.combine(
format.label({ label }),
format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
serverFormat
),
transports: [
new transports.Console({ level }),
new transports.DailyRotateFile({
level,
filename: "%DATE%.log",
dirname: join(__dirname, "../../logs"),
datePattern: "YYYY-MM-DD",
zippedArchive: true,
maxSize: "5m",
maxFiles: "30d"
}),
new transports.DailyRotateFile({
level: "debug",
filename: "%DATE%-verbose.log",
dirname: join(__dirname, "../../logs"),
datePattern: "YYYY-MM-DD",
zippedArchive: true,
maxSize: "20m",
maxFiles: "10d"
})
]
});
}
require("dotenv").config();
const auth = createCustomLogger("AUTH", "debug");
const query = createCustomLogger("QUERY", "debug");
const database = createCustomLogger(
"DB",
process.env.DATABASE_LOG_VERBOSE ? "debug" : "info"
);
const server = createCustomLogger("SERVER", "debug");
const cli = createCustomLogger("CLI", "debug");
export default { auth, query, database, server, cli };
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment