refactor(logger): extract sentry reporter
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user