X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Futils%2FLogger.ts;h=b13ec0477ab9314aca3859f264e62c40ae531929;hb=32ddfff1a1d314429239d98d6f5c56939aff17c4;hp=1baea780f3625896b95b43ca62986756bfd847c0;hpb=6c1761d470507ea23d186be61b94ca7375c5144a;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/Logger.ts b/src/utils/Logger.ts index 1baea780..b13ec047 100644 --- a/src/utils/Logger.ts +++ b/src/utils/Logger.ts @@ -1,59 +1,74 @@ -import type { Format } from 'logform'; -import { Logger, createLogger, format, transport } from 'winston'; -import DailyRotateFile from 'winston-daily-rotate-file'; -import TransportType from 'winston/lib/winston/transports/index.js'; +import type { FormatWrap } from 'logform' +import { createLogger, format, type transport } from 'winston' +import TransportType from 'winston/lib/winston/transports/index.js' +import DailyRotateFile from 'winston-daily-rotate-file' -import Configuration from './Configuration'; -import Utils from './Utils'; +import { ConfigurationSection, type LogConfiguration } from '../types/index.js' +import { Configuration } from './Configuration.js' +import { insertAt } from './Utils.js' -let transports: transport[]; -if (Configuration.getLogRotate()) { - const logMaxFiles = Configuration.getLogMaxFiles(); +const logConfiguration = Configuration.getConfigurationSection( + ConfigurationSection.log +) +let transports: transport[] +if (logConfiguration.rotate === true) { + const logMaxFiles = logConfiguration.maxFiles + const logMaxSize = logConfiguration.maxSize transports = [ new DailyRotateFile({ - filename: Utils.insertAt( - Configuration.getLogErrorFile(), + filename: insertAt( + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + logConfiguration.errorFile!, '-%DATE%', - Configuration.getLogErrorFile().indexOf('.log') + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + logConfiguration.errorFile!.indexOf('.log') ), level: 'error', - maxFiles: logMaxFiles, + ...(logMaxFiles != null && { maxFiles: logMaxFiles }), + ...(logMaxSize != null && { maxSize: logMaxSize }) }), new DailyRotateFile({ - filename: Utils.insertAt( - Configuration.getLogFile(), - '-%DATE%', - Configuration.getLogFile().indexOf('.log') - ), - maxFiles: logMaxFiles, - }), - ]; + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + filename: insertAt(logConfiguration.file!, '-%DATE%', logConfiguration.file!.indexOf('.log')), + ...(logMaxFiles != null && { maxFiles: logMaxFiles }), + ...(logMaxSize != null && { maxSize: logMaxSize }) + }) + ] } else { transports = [ - new TransportType.File({ filename: Configuration.getLogErrorFile(), level: 'error' }), - new TransportType.File({ filename: Configuration.getLogFile() }), - ]; + new TransportType.File({ + filename: logConfiguration.errorFile, + level: 'error' + }), + new TransportType.File({ + filename: logConfiguration.file + }) + ] } -const logger: Logger = createLogger({ - level: Configuration.getLogLevel(), - format: format.combine(format.splat(), (format[Configuration.getLogFormat()] as () => Format)()), - transports: transports, -}); +export const logger = createLogger({ + silent: logConfiguration.enabled === false, + level: logConfiguration.level, + format: format.combine( + format.splat(), + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + (format[logConfiguration.format! as keyof FormatWrap] as FormatWrap)() + ), + transports +}) // // If enabled, log to the `console` with the format: // `${info.level}: ${info.message} JSON.stringify({ ...rest }) ` // -if (Configuration.getLogConsole()) { +if (logConfiguration.console === true) { logger.add( new TransportType.Console({ format: format.combine( format.splat(), - (format[Configuration.getLogFormat()] as () => Format)() - ), + // eslint-disable-next-line @typescript-eslint/no-non-null-assertion + (format[logConfiguration.format! as keyof FormatWrap] as FormatWrap)() + ) }) - ); + ) } - -export default logger;