|
|
|
import { LogMessage, LoggingLevel } from './types.ts'
|
|
|
|
import {make} from "../../../../di/src/global.ts";
|
|
|
|
import {Logging} from "./Logging.ts";
|
|
|
|
import {blue, cyan, gray, green, red, yellow} from "../../external/std.ts";
|
|
|
|
|
|
|
|
const isLoggerClass = (something: any): something is (typeof Logger) => {
|
|
|
|
return something.prototype instanceof Logger
|
|
|
|
}
|
|
|
|
|
|
|
|
export { isLoggerClass }
|
|
|
|
|
|
|
|
export default abstract class Logger {
|
|
|
|
public abstract async write(message: LogMessage): Promise<void>;
|
|
|
|
|
|
|
|
public static register() {
|
|
|
|
make(Logging).register_logger(this)
|
|
|
|
}
|
|
|
|
|
|
|
|
public static remove() {
|
|
|
|
make(Logging).remove_logger(this)
|
|
|
|
}
|
|
|
|
|
|
|
|
protected format_date(date: Date): string {
|
|
|
|
return `${date.getFullYear()}-${date.getMonth()+1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`
|
|
|
|
}
|
|
|
|
|
|
|
|
protected level_display(level: LoggingLevel): string {
|
|
|
|
switch(level) {
|
|
|
|
case LoggingLevel.Success:
|
|
|
|
return green('success')
|
|
|
|
case LoggingLevel.Error:
|
|
|
|
return red(' error')
|
|
|
|
case LoggingLevel.Warning:
|
|
|
|
return yellow('warning')
|
|
|
|
case LoggingLevel.Info:
|
|
|
|
return blue(' info')
|
|
|
|
case LoggingLevel.Debug:
|
|
|
|
return cyan(' debug')
|
|
|
|
case LoggingLevel.Verbose:
|
|
|
|
return gray('verbose')
|
|
|
|
case LoggingLevel.Silent:
|
|
|
|
return gray(' silent')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|