Add logs rotation.
[e-mobility-charging-stations-simulator.git] / src / utils / Logger.ts
1 import 'winston-daily-rotate-file';
2
3 import Configuration from './Configuration';
4 import Utils from './Utils';
5 import winston from 'winston';
6
7 const maxLogFiles = 7;
8
9 const logger = winston.createLogger({
10 level: Configuration.getLogLevel(),
11 format: winston.format.combine(winston.format.splat(), winston.format[Configuration.getLogFormat()]()),
12 transports: [
13 //
14 // - Write to all logs with level `info` and below to `combined.log`
15 // - Write all logs error (and below) to `error.log`.
16 //
17 new winston.transports.DailyRotateFile({ filename: Utils.insertAt(Configuration.getLogErrorFile(), '-%DATE%', Configuration.getLogErrorFile().indexOf('.log')), level: 'error', maxFiles: maxLogFiles }),
18 new winston.transports.DailyRotateFile({ filename: Utils.insertAt(Configuration.getLogFile(), '-%DATE%', Configuration.getLogFile().indexOf('.log')), maxFiles: maxLogFiles }),
19 ],
20 });
21
22 //
23 // If enabled, log to the `console` with the format:
24 // `${info.level}: ${info.message} JSON.stringify({ ...rest }) `
25 //
26 if (Configuration.getLogConsole()) {
27 logger.add(new winston.transports.Console({
28 format: winston.format.combine(winston.format.splat(), winston.format[Configuration.getLogFormat()]()),
29 }));
30 }
31
32 export default logger;