import { LogLevel, type BarkLogger, setLogger } from './generated/bark'; /** * A `BarkLogger` that forwards records to the JS `console`. * * Useful as a default during development. For production, implement * `BarkLogger` yourself to forward to Sentry, Reactotron, etc. */ export class ConsoleBarkLogger implements BarkLogger { log(level: LogLevel, target: string, message: string): void { const line = `[bark][${LogLevel[level]}][${target}] ${message}`; switch (level) { case LogLevel.Error: console.error(line); break; case LogLevel.Warn: console.warn(line); break; case LogLevel.Info: console.info(line); break; case LogLevel.Debug: case LogLevel.Trace: console.log(line); break; } } } /** * Install a default `ConsoleBarkLogger`. Returns the logger so callers can * later detach it via `clearLogger()`. * * Calling this multiple times replaces the previous logger in-place. */ export function barkAttachConsoleLogger( maxLevel: LogLevel = LogLevel.Info ): BarkLogger { const logger = new ConsoleBarkLogger(); setLogger(logger, maxLevel); return logger; }