UNPKG

logixlysia

Version:

🦊 Logixlysia is a logger for Elysia

86 lines (85 loc) • 2.82 kB
import { Elysia } from "elysia"; interface RequestInfo { headers: { get: (key: string) => string | null }; method: string; url: string; } type LogLevel = "DEBUG" | "INFO" | "WARNING" | "ERROR" | string; interface LogData { status?: number; message?: string; context?: Record<string, string | number | boolean | null>; stack?: string; metrics?: { memoryUsage?: number cpuUsage?: number responseSize?: number }; } interface Logger { store?: StoreData; log(level: LogLevel, request: RequestInfo, data: LogData, store: StoreData): void; handleHttpError(request: RequestInfo, error: HttpError, store: StoreData): void; customLogFormat?: string; info(request: RequestInfo, message: string, context?: Record<string, string | number | boolean | null>, store?: StoreData): void; error(request: RequestInfo, message: string, context?: Record<string, string | number | boolean | null>, store?: StoreData): void; warn(request: RequestInfo, message: string, context?: Record<string, string | number | boolean | null>, store?: StoreData): void; debug(request: RequestInfo, message: string, context?: Record<string, string | number | boolean | null>, store?: StoreData): void; } interface StoreData { beforeTime: bigint; logger?: Logger; hasCustomLog?: boolean; } interface LogixlysiaContext { store: { logger: Logger beforeTime: bigint hasCustomLog: boolean }; request: RequestInfo; } declare class HttpError extends Error { status: number; constructor(status: number, message: string); } type TransportFunction = (level: LogLevel, message: string, meta: { request: RequestInfo data: LogData store: StoreData }) => Promise<void> | void; interface Transport { log: TransportFunction; } interface TimestampConfig { translateTime?: boolean | string; } interface Options { config?: { customLogFormat?: string logFilePath?: string logRotation?: { maxSize?: number maxFiles?: number compress?: boolean } logFilter?: { level?: LogLevel | LogLevel[] method?: string | string[] status?: number | number[] } | null ip?: boolean useColors?: boolean showStartupMessage?: boolean startupMessageFormat?: "banner" | "simple" transports?: Transport[] timestamp?: TimestampConfig }; } declare function createLogger(options?: Options): Logger; declare function handleHttpError2(request: RequestInfo, error: HttpError, store: StoreData, options?: Options): void; declare function logToTransports(level: LogLevel, request: RequestInfo, data: LogData, store: StoreData, options?: Options): Promise<void>; declare function logixlysia(options?: Options): Elysia; export { logToTransports, handleHttpError2 as handleHttpError, logixlysia as default, createLogger, Transport, StoreData, RequestInfo, Options, LogixlysiaContext, Logger, LogLevel, LogData, HttpError };