refactor(logger): extract sentry reporter

This commit is contained in:
2026-06-30 11:24:13 +08:00
parent a761917669
commit 345c5f7f25
2 changed files with 92 additions and 0 deletions
+31
View File
@@ -1,6 +1,10 @@
import pino, { type Logger as PinoLogger, type LoggerOptions } from "pino";
import { AppEnvUtil } from "./app-env";
import {
reportSentryLog,
type RemoteLogLevel,
} from "./logger-sentry-reporter";
type LogArgs = unknown[];
type PinoLogArgs = Parameters<PinoLogger["debug"]>;
@@ -133,6 +137,8 @@ export class Logger {
}
private write(level: LogLevel, args: LogArgs): void {
Logger.reportImportantProductionLog(level, this.component, args);
if (Logger.shouldUseBrowserConsole()) {
Logger.writeBrowserConsole(level, this.component, args);
return;
@@ -161,6 +167,31 @@ export class Logger {
return typeof window !== "undefined" && AppEnvUtil.canOutputLogs();
}
private static shouldReportToRemote(level: LogLevel): level is RemoteLogLevel {
return AppEnvUtil.isProduction() && (
level === "warn" ||
level === "error" ||
level === "fatal"
);
}
private static reportImportantProductionLog(
level: LogLevel,
component: string,
args: LogArgs,
): void {
if (!Logger.shouldReportToRemote(level)) return;
const { message, data } = Logger.toBrowserConsolePayload(args);
reportSentryLog({
level,
component,
message,
data,
formatValue: Logger.formatValue,
});
}
private static writeBrowserConsole(
level: LogLevel,
component: string,