inula/packages/inula-cli/src/utils/logger.ts

58 lines
1.3 KiB
TypeScript

/*
* Copyright (c) 2023 Huawei Technologies Co.,Ltd.
*
* openInula is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
export enum LogLevel {
DEBUG = 0,
INFO = 1,
WARN = 2,
ERROR = 3,
}
export class Logger {
private readonly level: LogLevel;
constructor(level?: LogLevel) {
if (level !== undefined) {
this.level = level;
} else {
this.level = LogLevel.INFO;
}
}
debug(message: string): void {
if (this.level <= LogLevel.DEBUG) {
console.debug(`[DEBUG] ${message}`);
}
}
info(message: string): void {
if (this.level <= LogLevel.INFO) {
console.info(`[INFO] ${message}`);
}
}
warn(message: string): void {
if (this.level <= LogLevel.WARN) {
console.warn(`[WARN] ${message}`);
}
}
error(message: string, error?: Error): void {
if (this.level <= LogLevel.ERROR) {
console.error(`[ERROR] ${message}`, error || '');
}
}
}