diff --git a/package.json b/package.json index 5ea3c75..43f99eb 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,8 @@ "prettier": "^3.3.1", "rage-rpc": "^0.4.0", "tsup": "^8.1.0", - "typescript": "^5.4.5" + "typescript": "^5.4.5", + "winston": "^3.13.0" }, - "type": "module", - "devDependencies": { - - } + "type": "module" } diff --git a/server/src/logger.ts b/server/src/logger.ts new file mode 100644 index 0000000..e47cb0f --- /dev/null +++ b/server/src/logger.ts @@ -0,0 +1,36 @@ +import winston, { format } from 'winston' +const { timestamp, printf, colorize } = format + +export default class Logger { + private format = printf(({ message, level, timestamp }) => { + return `[${new Date(timestamp).toLocaleTimeString()}] [${level}]: ${message}` + }) + + private systemLogger = winston.createLogger({ + transports: [new winston.transports.Console()], + format: format.combine( + colorize({ + level: true, + colors: { + error: 'red', + warn: 'yellow', + info: 'white', + }, + }), + timestamp(), + this.format, + ), + }) + + public info(message: unknown) { + this.systemLogger.info(message) + } + + public warn(message: unknown) { + this.systemLogger.warn(message) + } + + public error(message: unknown) { + this.systemLogger.error(message) + } +}