diff --git a/src/client/createSorokitClient.ts b/src/client/createSorokitClient.ts index 82e780f..2b7cf1f 100644 --- a/src/client/createSorokitClient.ts +++ b/src/client/createSorokitClient.ts @@ -574,6 +574,7 @@ export function createSorokitClient( config.logger ?? createLogger({ logLevel: config.logLevel ?? (config.debug ? "debug" : "off"), + prefix: config.logPrefix, ...(config.logPrefix !== undefined ? { prefix: config.logPrefix } : {}), }); const logger = createTracedLogger(baseLogger, { traceId }); diff --git a/src/shared/logger.ts b/src/shared/logger.ts index e955cb3..96b8c2d 100644 --- a/src/shared/logger.ts +++ b/src/shared/logger.ts @@ -159,7 +159,27 @@ export function createTracedLogger( }; } -/** Log the start and completion of an asynchronous operation. */ +/** + * Create a logger instance. + * Pass a custom implementation to redirect logs to your own sink. + */ +export function createLogger( + config?: LoggerConfig | boolean, + custom?: SorokitLogger, +): SorokitLogger { + if (custom) return custom; + if (typeof config === "object" && config?.logger) return config.logger; + + const logLevel = resolveLogLevel(config); + if (logLevel === "off") return noopLogger; + const prefix = typeof config === "object" ? config?.prefix : undefined; + return createConsoleLogger(logLevel, prefix); +} + +/** + * Log the start and result of an async SDK operation. + * Emits debug on start, info on success, warn on handled errors. + */ export async function withLogging( logger: TracedLogger, operation: string,