85 lines
1.3 KiB
TypeScript
85 lines
1.3 KiB
TypeScript
export enum LogLevel {
|
|
Debug = 0,
|
|
Info = 1,
|
|
Warn = 2,
|
|
Error = 3
|
|
}
|
|
|
|
const loggers: Logger[] = [];
|
|
let logLevel = LogLevel.Warn;
|
|
|
|
export interface Logger {
|
|
/**
|
|
* Show an error message.
|
|
*
|
|
* @param message The message to show.
|
|
*/
|
|
error(message: string): void;
|
|
/**
|
|
* Show a warning message.
|
|
*
|
|
* @param message The message to show.
|
|
*/
|
|
warn(message: string): void;
|
|
/**
|
|
* Show an information message.
|
|
*
|
|
* @param message The message to show.
|
|
*/
|
|
info(message: string): void;
|
|
/**
|
|
* Log a message.
|
|
*
|
|
* @param message The message to log.
|
|
*/
|
|
log(message: string): void;
|
|
}
|
|
|
|
export function registerLogger(l: Logger) {
|
|
loggers.push(l);
|
|
}
|
|
|
|
export function setLogLevel(ll: LogLevel) {
|
|
logLevel = ll;
|
|
}
|
|
|
|
export function log(message: string): void {
|
|
if (logLevel > LogLevel.Debug) {
|
|
return;
|
|
}
|
|
|
|
for (const l of loggers) {
|
|
l.log(message);
|
|
}
|
|
}
|
|
|
|
export function info(message: string): void {
|
|
if (logLevel > LogLevel.Info) {
|
|
return;
|
|
}
|
|
|
|
for (const l of loggers) {
|
|
l.info(message);
|
|
}
|
|
}
|
|
|
|
export function warn(message: string): void {
|
|
if (logLevel > LogLevel.Warn) {
|
|
return;
|
|
}
|
|
|
|
for (const l of loggers) {
|
|
l.warn(message);
|
|
}
|
|
}
|
|
|
|
export function error(message: string): void {
|
|
if (logLevel > LogLevel.Error) {
|
|
return;
|
|
}
|
|
|
|
for (const l of loggers) {
|
|
l.error(message);
|
|
}
|
|
}
|