Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | 8x 8x 8x 8x 8x 8x 8x 8x 24x 24x 24x 24x 23x 1054x 272x 107x 24x 24x 8x 8x 8x | /*
* The coLAB project
* Copyright (C) 2021-2023 AlbaSim, MEI, HEIG-VD, HES-SO
*
* Licensed under the MIT License
*/
type LogFn = (...args: unknown[]) => void;
export type LoggerLevel = 0 | 1 | 2 | 3 | 4 | 5;
export const OFF: LoggerLevel = 0;
export const ERROR: LoggerLevel = 1;
export const WARN: LoggerLevel = 2;
export const INFO: LoggerLevel = 3;
export const DEBUG: LoggerLevel = 4;
export const TRACE: LoggerLevel = 5;
interface Logger {
getLevel: () => LoggerLevel;
setLevel: (level: LoggerLevel) => void;
trace: LogFn;
debug: LogFn;
info: LogFn;
warn: LogFn;
error: LogFn;
}
export const loggers: Record<string, Logger> = {};
function mapArgs(...args: unknown[]): unknown[] {
return args.map(arg => {
const argP = typeof arg === 'function' ? arg() : arg;
try {
return argP;
//return typeof argP === 'object' ? JSON.stringify(argP) : arg;
} catch {
return arg;
}
});
}
export function getLogger(name: string): Logger {
const logger = loggers[name];
if (logger == null) {
let currentLevel: LoggerLevel = WARN;
const logger: Logger = {
getLevel: () => currentLevel,
setLevel: (level: LoggerLevel) => (currentLevel = level),
trace: (...params: unknown[]): void => {
Iif (currentLevel >= TRACE) {
// eslint-disable-next-line no-console
console.info(...mapArgs(...params));
}
},
debug: (...params: unknown[]): void => {
Iif (currentLevel >= DEBUG) {
// eslint-disable-next-line no-console
console.info(...mapArgs(...params));
}
},
info: (...params: unknown[]): void => {
Iif (currentLevel >= INFO) {
// eslint-disable-next-line no-console
console.info(...mapArgs(...params));
}
},
warn: (...params: unknown[]): void => {
Iif (currentLevel >= WARN) {
// eslint-disable-next-line no-console
console.warn(...mapArgs(...params));
}
},
error: (...params: unknown[]): void => {
Iif (currentLevel >= ERROR) {
// eslint-disable-next-line no-console
console.error(...mapArgs(...params));
}
},
};
loggers[name] = logger;
return logger;
} else E{
return logger;
}
}
const logger = getLogger('default');
logger.setLevel(INFO);
export default logger;
|