From f2a9112a06683b425def3fc12b3b36a7c26cc4c3 Mon Sep 17 00:00:00 2001 From: Yuzu Date: Sun, 6 Mar 2022 16:40:17 +0700 Subject: [PATCH] Create Logger.ts --- src/libs/Logger.ts | 64 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 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..dc0259f --- /dev/null +++ b/src/libs/Logger.ts @@ -0,0 +1,64 @@ +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 consoleFormat = 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 format = winston.format.combine( + winston.format.timestamp({ + format: new Date().toISOString() + }), + winston.format.json() +) + +const transports = [ + new winston.transports.Console({ + format: consoleFormat + }), + 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