Files
Freedom-Loader/server/logger.js
2025-06-29 11:27:52 +02:00

67 lines
1.8 KiB
JavaScript

const { createLogger, format, transports } = require("winston");
const DailyRotateFile = require("winston-daily-rotate-file");
const fs = require("fs");
const path = require("path");
const logDir = path.join(__dirname, "../logs");
if (!fs.existsSync(logDir)) fs.mkdirSync(logDir);
function getSessionStartLine() {
const now = new Date().toISOString();
return `--- Démarrage de la session : ${now} ---`;
}
function getSessionEndLine() {
const now = new Date().toISOString();
return `--- Fin de la session : ${now} ---`;
}
const logger = createLogger({
level: "info",
format: format.combine(
format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
format.printf(({ timestamp, level, message }) =>
`${timestamp} | ${level.toUpperCase()} | ${message}`
)
),
transports: [
new DailyRotateFile({
dirname: logDir,
filename: "combined-%DATE%.log",
datePattern: "YYYY-MM-DD",
zippedArchive: false, // tu peux mettre true si tu veux compresser
maxFiles: "14d", // conserve les logs des 14 derniers jours
format: format.combine(
format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
format.printf(({ timestamp, level, message }) =>
`${timestamp} | ${level.toUpperCase()} | ${message}`
)
),
options: { flags: "a" },
}),
new transports.Console({
format: format.combine(
format.colorize(),
format.timestamp({ format: "HH:mm:ss" }),
format.printf(({ timestamp, level, message }) =>
`${timestamp} | ${level} | ${message}`
)
),
}),
],
});
function logSessionStart() {
logger.info(getSessionStartLine());
}
function logSessionEnd() {
logger.info(getSessionEndLine());
}
module.exports = {
logger,
logSessionStart,
logSessionEnd,
};