export class Logger { constructor( private readonly endpoint: string, private readonly token: string, private readonly path: string, ) {} send( level: "log" | "error" | "warn" | "info", message: string, ...metadata: unknown[] ) { const data = { level, message: `${this.path}: ${message}`, metadata, }; fetch(`${this.endpoint}`, { method: "POST", body: JSON.stringify(data), headers: { "Content-Type": "application/json", "x-api-key": this.token, }, }).catch((error) => { console.error("Failed to send log to logger:", error); }); } log(message: string, ...metadata: unknown[]) { this.send("log", message, ...metadata); } error(message: string, ...metadata: unknown[]) { this.send("error", message, ...metadata); } warn(message: string, ...metadata: unknown[]) { this.send("warn", message, ...metadata); } info(message: string, ...metadata: unknown[]) { this.send("info", message, ...metadata); } child(path: string): Logger { return new Logger(this.endpoint, this.token, `${this.path}.${path}`); } }