Files
languageservices/languageservice/src/log.ts
T
Christopher Schleiden 2a3d63551f Rename folders
2023-02-22 15:52:40 -08:00

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