@reyadeyat/haseb
Version:
Kateb - Reyadeyat Mathematics Book in HTML and vanilla Javascript
148 lines (131 loc) • 4.24 kB
JavaScript
/*
* Copyright (C) 2023-2024 Reyadeyat
*
* Reyadeyat/Haseb is licensed under the
* BSD 3-Clause "New" or "Revised" License
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://reyadeyat.net/LICENSE/HASEB.LICENSE
*
* 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.
*/
;
export class Log {
static FATAL = 990;
static fatal(msg, ...args) {
if (Log.log_level > Log.FATAL) {
return;
}
console.info("FATAL: " + msg + Log.dump(...args));
}
static ERROR = 890;
static error(msg, ...args) {
if (Log.log_level > Log.ERROR) {
return;
}
console.info("ERROR: " + msg + Log.dump(...args));
}
static WARNING = 790;
static warning(msg, ...args) {
if (Log.log_level > Log.WARNING) {
return;
}
console.info("WARNING: " + msg + Log.dump(...args));
}
static INFO = 690;
static info(msg, ...args) {
if (Log.log_level > Log.INFO) {
return;
}
console.info("INFO: " + msg + Log.dump(...args));
}
static DEBUG = 590;
static debug(msg, ...args) {
if (Log.log_level > Log.DEBUG) {
return;
}
console.info("DEBUG: " + msg + Log.dump(...args));
}
static DEBUG_LOGIC = 580;
static debug_logic(msg, ...args) {
if (Log.log_level > Log.DEBUG_LOGIC) {
return;
}
console.info("DEBUG_LOGIC: " + msg + Log.dump(...args));
}
static DEBUG_DATA = 570;
static debug_data(msg, ...args) {
if (Log.log_level > Log.DEBUG_DATA) {
return;
}
console.info("DEBUG_DATA: " + msg + Log.dump(...args));
}
static TRACE = 490;
static trace(msg, ...args) {
if (Log.log_level > Log.TRACE) {
return;
}
console.info("TRACE: " + msg + Log.dump(...args));
}
static TRACE_LOGIC = 480;
static trace_logic(msg, ...args) {
if (Log.log_level > Log.TRACE_LOGIC) {
return;
}
console.info("TRACE_LOGIC: " + msg + Log.dump(...args));
}
static TRACE_DATA = 470;
static trace_data(msg, ...args) {
if (Log.log_level > Log.TRACE_DATA) {
return;
}
console.info("TRACE_DATA: " + msg + Log.dump(...args));
}
static log_level = Log.info;
static log_level(log_level) {
Log.log_level = log_level;
}
static is(log_level) {
return Log.log_level == log_level;
}
static getLogLevel(log_level_name) {
switch (log_level_name.toUpperCase()) {
case 'FATAL': return Log.FATAL;
case 'ERROR': return Log.ERROR;
case 'WARNING': return Log.WARNING;
case 'INFO': return Log.INFO;
case 'DEBUG': return Log.DEBUG;
case 'DEBUG_LOGIC': return Log.DEBUG_LOGIC;
case 'DEBUG_DATA': return Log.DEBUG_DATA;
case 'TRACE': return Log.TRACE;
case 'TRACE_LOGIC': return Log.TRACE_LOGIC;
case 'TRACE_DATA': return Log.TRACE_DATA;
}
throw new Error("Undefined Log Level '" + log_level_name.toUpperCase() + "'");
}
static setLogLevel(log_level_name) {
Log.log_level = Log.getLogLevel(log_level_name);
}
static dump(...args) {
if (args == null || args.length == 0) {
return "";
}
let obj = {};
let key = args[0].split(",");
for (let i = 1; i < args.length; i++) {
if (Array.isArray(args[i]) == true) {
for (let x = 0; x < args[i].length; x++) {
obj[key[i-1].trim()+"_"+x] = args[i][x];
}
} else {
obj[key[i-1].trim()] = args[i];
}
}
return JSON.stringify(obj);
}
}