timer/src/logger.js
Zlatko Đurić 061637c481 works nicely
2025-04-13 20:17:28 +02:00

60 lines
1.3 KiB
JavaScript

const getPrefix = () => {
const prefixName = game.i18n?.localize("YAT.title") ||
"Timer Module";
return `[${prefixName}] `;
};
export const logger = (() => {
const originalConsole = console;
const wrapper = {};
const methodsToPrefix = [
"log",
"info",
"warn",
"error",
"debug",
"dir",
"dirxml",
"assert",
"count",
"countReset",
"group",
"groupCollapsed",
"groupEnd",
"time",
"timeLog",
"timeEnd",
"trace",
];
methodsToPrefix.forEach((methodName) => {
wrapper[methodName] = function (...args) {
const modifiedArgs = [...args];
const prefix = getPrefix();
// preserve string substitution formatting (e.g., %s, %d)
if (typeof modifiedArgs[0] === "string") {
modifiedArgs[0] = prefix + modifiedArgs[0];
} else {
modifiedArgs.unshift(prefix);
}
originalConsole[methodName].apply(originalConsole, modifiedArgs);
};
});
if (typeof originalConsole.table === "function") {
wrapper.table = function (...args) {
const prefix = getPrefix();
originalConsole.log(`=== ${prefix} ===`);
originalConsole.table.apply(originalConsole, args);
};
}
if (typeof originalConsole.clear === "function") {
wrapper.clear = function () {
originalConsole.clear();
};
}
return wrapper;
})();