You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.4 KiB

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')
}
}
}