Files
pedwfrontend/actions/core/logger.js
T
2026-06-29 13:08:06 +00:00

101 lines
3.2 KiB
JavaScript

import { hasOwn } from "../../components/utils";
const MASK = "[REDACTED]";
const redactString = (value) => {
if (typeof value !== "string") return value;
return value
.replace(
/([a-zA-Z0-9._%+-]{1,})@([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/g,
`${MASK}@${MASK}`
)
.replace(/Bearer\s+[A-Za-z0-9._\-]+/gi, `Bearer ${MASK}`)
.replace(/("client_secret"\s*:\s*")[^"]+("?)/gi, `$1${MASK}$2`)
.replace(/("access_token"\s*:\s*")[^"]+("?)/gi, `$1${MASK}$2`);
};
export const redactSensitive = (value) => {
if (value == null) return value;
if (typeof value === "string") {
return redactString(value);
}
try {
const json = JSON.stringify(value);
return redactString(json);
} catch (_error) {
return MASK;
}
};
export const getIP = (req) => {
const forwarded = req.headers["x-forwarded-for"];
const ip =
typeof forwarded === "string"
? forwarded.split(/, /)[0]
: req.socket.remoteAddress;
console.info(
"\n====================\n Client IP address: " + ip,
"\n=====================\n"
);
};
export const consoleLogger = (err) => {
console.log(
"\n\n/////////////////////////////////////////////////\nRaw Error " +
redactSensitive(err) +
"\n\n/////////////////////////////////////////////////\n"
);
const errStr =
"\n\n/////////////////////////////////////////////////\nServer Error\n" +
(hasOwn(err, "name") ? `Name: ${err.name}\n` : "") +
(hasOwn(err, "code") ? `Code: ${err.code}\n` : "") +
(hasOwn(err, "query") ? `Query: ${err.query}\n` : "") +
(hasOwn(err, "message") ? `Message: ${err.message}\n` : "") +
(err?.request?.url ? `request.url: ${err.request.url}\n` : "") +
(err?.response?.status ? `Status: ${err.response.status}\n` : "") +
(err?.response?.statusText
? `StatusText: ${err.response.statusText}\n`
: "") +
(err?.response?.request?.socket?.remoteAddress
? `Request IP: ${err.response.request.socket.remoteAddress}\n`
: "") +
(err?.response?.data?.error?.message
? `Message: ${redactSensitive(err.response.data.error.message)}\n`
: "") +
(err?.response?.config?.url
? `Request URL: ${redactSensitive(err.response.config.url)}\n`
: "") +
(err?.response?.headers?.date
? `Request Time: ${err.response.headers.date}\n`
: "") +
(err?.config?.url
? `Axios config url: ${redactSensitive(err.config.url)}\n`
: "") +
(err?.message
? `Axios message: ${redactSensitive(err.message)}\n`
: "") +
(err?.config?.data
? `Request payload: ${redactSensitive(err.config.data)}\n`
: "") +
"\n/////////////////////////////////////////////////\n";
console.log(errStr);
};
export const conLog = (err) => {
var errStr =
"\n\n/////////////////////////////////////////////////\nResponse: " +
"\n" +
err +
"\n/////////////////////////////////////////////////\n\n";
console.log(errStr);
return errStr;
};