From ca50e5f5217fef63acb5f1c3ccc2803af7595fea Mon Sep 17 00:00:00 2001 From: Yuzu Date: Tue, 14 Sep 2021 09:56:54 -0700 Subject: [PATCH] Create Logger.ts --- src/libs/Logger.ts | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/libs/Logger.ts diff --git a/src/libs/Logger.ts b/src/libs/Logger.ts new file mode 100644 index 0000000..12424da --- /dev/null +++ b/src/libs/Logger.ts @@ -0,0 +1,55 @@ +import winston from 'winston'; + +const levels = { + critical: 0, + error: 1, + alert: 2, + warn: 3, + info: 4, + http: 5, + debug: 6, +}; + +const level = () => { + const env = process.env.NODE_ENV || 'development'; + const isDevelopment = env === 'development'; + return isDevelopment ? 'debug' : 'warn'; +}; + +const colors = { + critical: 'red', + error: 'red', + alert: 'red', + warn: 'yellow', + info: 'green', + http: 'magenta', + debug: 'white', +}; + +winston.addColors(colors); + +const format = winston.format.combine( + winston.format.timestamp({ format: 'YYYY-MM-DD HH:mm:ss:ms' }), + winston.format.colorize({ all: true }), + winston.format.printf( + (info) => `[${info.timestamp}] [${info.level}] ${info.message}` + ) +); + +const transports = [ + new winston.transports.Console(), + new winston.transports.File({ + filename: 'logs/error.log', + level: 'error', + }), + new winston.transports.File({ filename: 'logs/all.log' }), +]; + +const Logger = winston.createLogger({ + level: level(), + levels, + format, + transports, +}); + +export default Logger; \ No newline at end of file