import { WebTracerProvider, Tracer } from '@opentelemetry/sdk-trace-web'; import { Logger } from '@opentelemetry/api-logs'; import { LoggerProvider } from '@opentelemetry/sdk-logs'; import { MeterOptions, Meter } from '@opentelemetry/api'; import { MeterProvider } from '@opentelemetry/sdk-metrics'; type LogLevel = "DEBUG" | "INFO" | "WARN" | "ERROR"; interface ConsoleArgs { level_from: LogLevel; custom_out?: (message: string) => void; } interface OltpArgs { level_from: LogLevel; endpoint: string; service_name: string; service_version: string; } type ConsoleFns = Record<"log" | "debug" | "info" | "warn" | "error", (message: string, ...optionalParams: any[]) => void>; declare class GlobalLog { loggerProvider: LoggerProvider; logger: Logger; tracerProvider: WebTracerProvider; tracer: Tracer; meterProvider: MeterProvider; console: ConsoleArgs | null; oltp: OltpArgs; orig_console_fns: ConsoleFns; /** * Get a new Meter instance to record metrics with. * * @example * ```typescript * const meter = globalLog.getMeter("example-meter"); * const counter = meter.createCounter('metric_name'); * counter.add(10, { 'key': 'value' }); * ``` */ meter(name: string, opts?: MeterOptions | { version?: string; }): Meter; /** * Run a sync callback inside a span. */ withSpan(name: string, cb: (span: any) => T): T; /** * Run an async callback inside a span. */ withSpanAsync(name: string, cb: (span: any) => Promise): Promise; /** Log a debug message. */ debug(message: string, ...attrs: any[]): void; /** Log an info message. */ info(message: string, ...attrs: any[]): void; /** Log a warning message. */ warn(message: string, ...attrs: any[]): void; /** Log an error message. */ error(message: string, ...attrs: any[]): void; _joined_msg_and_attrs(message: string, attrs: any[]): string; _log_inner(severityText: LogLevel, message: string, ...attrs: any[]): void; _set_console_fns(): void; /** Create the global logger, must setup oltp (http), console can be optionally setup and will just print logs. */ constructor({ otlp, console, }: { console?: ConsoleArgs; otlp: OltpArgs; }); } declare const LOG: GlobalLog; export { GlobalLog, LOG, type LogLevel };