blob: 44c9d26ec6d8d877f2ad39ae56084b4813fb3291 [file]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
enum LogLevel {
DEBUG = 0,
INFO = 1,
WARN = 2,
ERROR = 3,
}
class Logger {
private level: LogLevel;
constructor() {
// Allow configuration via environment variable
const envLevel = process.env.LOG_LEVEL?.toUpperCase();
this.level = envLevel && envLevel in LogLevel
? LogLevel[envLevel as keyof typeof LogLevel]
: LogLevel.INFO;
}
setLevel(level: LogLevel) {
this.level = level;
}
debug(message: string, ...args: unknown[]) {
if (this.level <= LogLevel.DEBUG) {
console.log(`[DEBUG] ${message}`, ...args);
}
}
info(message: string, ...args: unknown[]) {
if (this.level <= LogLevel.INFO) {
console.log(`[INFO] ${message}`, ...args);
}
}
warn(message: string, ...args: unknown[]) {
if (this.level <= LogLevel.WARN) {
console.warn(`[WARN] ${message}`, ...args);
}
}
error(message: string, ...args: unknown[]) {
if (this.level <= LogLevel.ERROR) {
console.error(`[ERROR] ${message}`, ...args);
}
}
}
export const logger = new Logger();
export { LogLevel };