You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
2.4 KiB
81 lines
2.4 KiB
import { logToDb } from "../db/databaseUtil";
|
|
|
|
function safeStringify(obj: unknown) {
|
|
const seen = new WeakSet();
|
|
|
|
return JSON.stringify(obj, (_key, value) => {
|
|
if (typeof value === "object" && value !== null) {
|
|
if (seen.has(value)) {
|
|
return "[Circular]";
|
|
}
|
|
seen.add(value);
|
|
}
|
|
|
|
if (typeof value === "function") {
|
|
return `[Function: ${value.name || "anonymous"}]`;
|
|
}
|
|
|
|
return value;
|
|
});
|
|
}
|
|
|
|
export const logger = {
|
|
debug: (message: string, ...args: unknown[]) => {
|
|
if (process.env.NODE_ENV !== "production") {
|
|
// eslint-disable-next-line no-console
|
|
console.debug(message, ...args);
|
|
// const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
|
// logToDb(message + argsString);
|
|
}
|
|
},
|
|
log: (message: string, ...args: unknown[]) => {
|
|
if (
|
|
process.env.NODE_ENV !== "production" ||
|
|
process.env.VITE_PLATFORM === "capacitor"
|
|
) {
|
|
// eslint-disable-next-line no-console
|
|
console.log(message, ...args);
|
|
const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
|
logToDb(message + argsString);
|
|
}
|
|
},
|
|
info: (message: string, ...args: unknown[]) => {
|
|
if (
|
|
process.env.NODE_ENV !== "production" ||
|
|
process.env.VITE_PLATFORM === "capacitor" ||
|
|
process.env.VITE_PLATFORM === "electron"
|
|
) {
|
|
// eslint-disable-next-line no-console
|
|
console.info(message, ...args);
|
|
const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
|
logToDb(message + argsString);
|
|
}
|
|
},
|
|
warn: (message: string, ...args: unknown[]) => {
|
|
if (
|
|
process.env.NODE_ENV !== "production" ||
|
|
process.env.VITE_PLATFORM === "capacitor" ||
|
|
process.env.VITE_PLATFORM === "electron"
|
|
) {
|
|
// eslint-disable-next-line no-console
|
|
console.warn(message, ...args);
|
|
const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
|
logToDb(message + argsString);
|
|
}
|
|
},
|
|
error: (message: string, ...args: unknown[]) => {
|
|
// Errors will always be logged
|
|
// eslint-disable-next-line no-console
|
|
console.error(message, ...args);
|
|
const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
|
logToDb(message + argsString);
|
|
},
|
|
};
|
|
|
|
// Add CommonJS export for Electron
|
|
if (typeof module !== "undefined" && module.exports) {
|
|
module.exports = { logger };
|
|
}
|
|
|
|
// Add default export for ESM
|
|
export default { logger };
|
|
|