logixlysia
Version:
🦊 Logixlysia is a logger for Elysia
86 lines (80 loc) • 2.46 kB
TypeScript
import { Elysia } from "elysia";
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/interfaces/index.d.ts
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 {
log(level: LogLevel, request: RequestInfo, data: LogData, store: StoreData): void;
handleHttpError(request: RequestInfo, error: HttpError, store: StoreData): void;
customLogFormat?: string;
}
interface StoreData {
beforeTime: bigint;
}
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
};
}
//#endregion
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/logger/create-logger.d.ts
declare function createLogger(options?: Options): Logger;
//#endregion
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/logger/handle-http-error.d.ts
declare function handleHttpError(request: RequestInfo, error: HttpError, store: StoreData, options?: Options): void;
//#endregion
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/output/console.d.ts
declare function logToTransports(level: LogLevel, request: RequestInfo, data: LogData, store: StoreData, options?: Options): Promise<void>;
//#endregion
//#region \0dts:/home/runner/work/logixlysia/logixlysia/src/index.d.ts
declare function logixlysia(options?: Options): Elysia;
//#endregion
export { createLogger, logixlysia as default, handleHttpError, logToTransports };