67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
|
|
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}`);
|
|
|
|
}
|
|
} |