Created scaffolding for Logging

This commit is contained in:
Patrick 2025-09-17 13:46:32 +02:00
parent ecff8798fe
commit 8eacebc306
1 changed files with 44 additions and 0 deletions

44
src/lib/server/log.ts Normal file
View File

@ -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