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.
46 lines
1.3 KiB
46 lines
1.3 KiB
import { logToDb } from "../db";
|
|
|
|
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 = {
|
|
log: (message: string, ...args: unknown[]) => {
|
|
if (process.env.NODE_ENV !== "production") {
|
|
// eslint-disable-next-line no-console
|
|
console.log(message, ...args);
|
|
const argsString = args.length > 0 ? " - " + safeStringify(args) : "";
|
|
logToDb(message + argsString);
|
|
}
|
|
},
|
|
warn: (message: string, ...args: unknown[]) => {
|
|
if (process.env.NODE_ENV !== "production") {
|
|
// 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);
|
|
},
|
|
};
|
|
|