import { Handler, LogLevel } from '../../Server'; import { Error, Log } from '../../type'; const LOG_SYSTEM_TITLE = 'SYSTEM'; const CONSOLE_COLOR = { DEFAULT: '\x1B[0m', SYSTEM: '\x1B[32m', WARN: '\x1B[33m', ERROR: '\x1B[35m', LOG: '\x1B[36m', } export default class LogPrint implements Handler { constructor() { } public onServerStart(): void { this.logSystem(`onServerStart`) } public onServerStop(): void { this.logSystem(`onServerStop`) } public onClientConnected(id: string): void { this.logSystem(`onClientConnected: ${id}`); } public onClientLogMessage(id: string, logs: Log[]): void { // this.logSystem(`onClientLogMessage: ${id}`); logs.forEach(log => { const date = new Date(log.time); const timeString = `${date.getHours()}:${('0' + date.getMinutes()).slice(-2)}:${('0' + date.getSeconds()).slice(-2)}`; switch (log.level) { case LogLevel.Log: console.log(`${CONSOLE_COLOR.LOG}[${timeString}][LOG] ${log.text}${CONSOLE_COLOR.DEFAULT}`); break; case LogLevel.Warn: console.log(`${CONSOLE_COLOR.WARN}[${timeString}][WARN] ${log.text}${CONSOLE_COLOR.DEFAULT}`); break; case LogLevel.Error: console.log(`${CONSOLE_COLOR.ERROR}[${timeString}][ERROR] ${log.text}${CONSOLE_COLOR.DEFAULT}`); break; } }); } public onClientErrorMessage(id: string, error: Error): void { } public onClientDisconnect(id: string): void { this.logSystem(`onClientDisconnect: ${id}`); } private logSystem(text: string): void { const date = new Date(); const timeString = `${date.getHours()}:${('0' + date.getMinutes()).slice(-2)}:${('0' + date.getSeconds()).slice(-2)}`; console.log(`${CONSOLE_COLOR.SYSTEM}[${timeString}][${LOG_SYSTEM_TITLE}] ${text}${CONSOLE_COLOR.DEFAULT}`); } }