45 lines
1.3 KiB
TypeScript
45 lines
1.3 KiB
TypeScript
|
|
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
|