Files
web/apps/redis-api/src/utils/logger.ts
Joakim Jäderberg 3af994b0a9 Merged in feat/redis-api-send-logs (pull request #2290)
feature: send logs to Sentry for Redis-Api

* feature: send logs to Sentry for Redis-Api


Approved-by: Linus Flood
2025-06-19 08:28:53 +00:00

68 lines
1.6 KiB
TypeScript

import pino from "pino";
import { env } from "@/env";
import { mask } from "./mask";
import { SentryLogger } from "@/server/sentry.server.config";
const serializers: { [key: string]: pino.SerializerFn } = {
password: (payload) => {
if (payload) {
return env.IS_DEV
? mask(payload)
: mask(payload, {
visibleStart: 0,
visibleEnd: 0,
});
}
return payload;
},
email: (payload) => {
if (payload) {
return env.IS_DEV ? payload : mask(payload);
}
return payload;
},
};
export const baseLogger = pino({
level: process.env.LOG_LEVEL || "info",
timestamp: pino.stdTimeFunctions.isoTime,
serializers,
hooks: {
logMethod(args, method, level) {
const [msg, ...rest] = args;
switch (level) {
case pinoLevels.error:
SentryLogger.error(msg, rest);
break;
case pinoLevels.warn:
SentryLogger.warn(msg, rest);
break;
case pinoLevels.info:
SentryLogger.info(msg, rest);
break;
case pinoLevels.debug:
SentryLogger.debug(msg, rest);
break;
}
method.apply(this, args);
},
},
});
export const loggerModule = (loggerName: string) => {
return baseLogger.child({ module: loggerName });
};
const pinoLevels = {
trace: 10,
debug: 20,
info: 30,
warn: 40,
error: 50,
fatal: 60,
} as const;