diff --git a/src/lib/server/log.ts b/src/lib/server/log.ts new file mode 100644 index 0000000..d116111 --- /dev/null +++ b/src/lib/server/log.ts @@ -0,0 +1,44 @@ + +export enum LogSeverity { + FATAL, + ERROR, + WARN, + INFO, + DEBUG, + TRACE +} + +export enum LogModule { + PROCESS, + USER +} + +abstract class Logger { + readonly module = { + ...LogModule + } + + abstract log(severity: LogSeverity, module: LogModule, message: string): void + fatal(module: LogModule, message: string): void { this.log(LogSeverity.FATAL, module, message) } + error(module: LogModule, message: string): void { this.log(LogSeverity.ERROR, module, message) } + warn(module: LogModule, message: string): void { this.log(LogSeverity.WARN, module, message) } + info(module: LogModule, message: string): void { this.log(LogSeverity.INFO, module, message) } + debug(module: LogModule, message: string): void { this.log(LogSeverity.DEBUG, module, message) } + trace(module: LogModule, message: string): void { this.log(LogSeverity.TRACE, module, message) } +} + +function create_log_string(severity: LogSeverity, module: LogModule, message: string): string { + return `${(new Date()).toISOString()} [${LogModule[module]}] [${LogSeverity[severity]}] ${message}` +} + +class DebugLogger extends Logger { + + log(severity: LogSeverity, module: LogModule, message: string): void { + console.log(create_log_string(severity, module, message)) + } +} + +const _logger: Logger = new DebugLogger() + + +export default _logger