logixlysia
Version:
🦊 Logixlysia is a logger for Elysia
38 lines (37 loc) • 1.56 kB
TypeScript
import { Logger as PinoLogger } from "pino";
type Pino = PinoLogger<never, boolean>;
type RequestInfo = Request;
type LogLevel = "DEBUG" | "INFO" | "WARNING" | "ERROR";
interface StoreData {
beforeTime: bigint;
}
interface Logger {
debug: (request: RequestInfo, message: string, context?: Record<string, unknown>) => void;
error: (request: RequestInfo, message: string, context?: Record<string, unknown>) => void;
getContext: (key: RequestInfo | object) => Readonly<Record<string, unknown>>;
handleHttpError: (request: RequestInfo, error: unknown, store: StoreData) => void;
info: (request: RequestInfo, message: string, context?: Record<string, unknown>) => void;
log: (level: LogLevel, request: RequestInfo, data: Record<string, unknown>, store: StoreData) => void;
mergeContext: (key: RequestInfo | object, partial: Record<string, unknown>) => void;
pino: Pino;
warn: (request: RequestInfo, message: string, context?: Record<string, unknown>) => void;
}
interface AIMetrics {
calls?: number;
finishReason?: string;
inputTokens?: number;
model?: string;
msToFinish?: number;
msToFirstChunk?: number;
outputTokens?: number;
provider?: string;
reasoningTokens?: number;
tokensPerSecond?: number;
totalTokens?: number;
}
/**
* Merges AI SDK / LLM usage metrics into the request context bag so they appear
* on the final access log (evlog-style `ai` object).
*/
declare const mergeAIMetrics: (logger: Pick<Logger, "mergeContext">, request: Request, metrics: AIMetrics) => void;
export { mergeAIMetrics, mergeAIMetrics as default, AIMetrics };