api-stats-logger
Version:
SDK completo de logging e monitoramento de APIs com nova estrutura de logs organizada, auto-instrumentação, dashboard em tempo real e CLI para configuração automática. Suporta logs estruturados por contexto (HTTP, business, security, system) com campos op
122 lines (106 loc) • 3.19 kB
TypeScript
declare module 'api-stats-logger' {
export interface LoggerOptions {
apiKey?: string;
url?: string;
service?: string;
environment?: string;
batchSize?: number;
flushInterval?: number;
enabled?: boolean;
maxRetries?: number;
retryDelay?: number;
captureErrors?: boolean;
capturePerformance?: boolean;
}
export interface LogEntry {
level: string;
message: string;
service?: string;
environment?: string;
metadata?: Record<string, any>;
}
export interface LoggerStats {
sent: number;
failed: number;
retries: number;
lastFlush: string | null;
bufferSize: number;
failedBufferSize: number;
enabled: boolean;
}
export interface MiddlewareOptions {
logger?: ApiStatsLogger;
captureBody?: boolean;
captureHeaders?: boolean;
captureQuery?: boolean;
captureParams?: boolean;
skipPaths?: string[];
skipMethods?: string[];
skipRoutes?: string[];
maxBodySize?: number;
}
export interface AutoInstrumentOptions {
autoDetect?: boolean;
detectFramework?: boolean;
captureHTTP?: boolean;
captureDatabase?: boolean;
captureErrors?: boolean;
captureQueries?: boolean;
maxQueryLength?: number;
}
export class Logger {
constructor(options: LoggerOptions);
log(entry: LogEntry): void;
flush(): Promise<void>;
retryFailed(): Promise<void>;
getStats(): LoggerStats;
disable(): void;
enable(): void;
close(): Promise<void>;
}
export class ApiStatsLogger extends Logger {
constructor(options?: LoggerOptions);
info(message: string, metadata?: Record<string, any>): void;
error(message: string, metadata?: Record<string, any>): void;
warn(message: string, metadata?: Record<string, any>): void;
debug(message: string, metadata?: Record<string, any>): void;
static expressMiddleware(options?: MiddlewareOptions): Function;
static nestMiddleware(options?: MiddlewareOptions): Function;
static fastifyMiddleware(options?: MiddlewareOptions): Function;
static koaMiddleware(options?: MiddlewareOptions): Function;
static init(options?: LoggerOptions & AutoInstrumentOptions): ApiStatsLogger;
}
export interface DatabaseMiddleware {
mongoose(): void;
sequelize(instance: any): void;
}
export interface MiddlewareManager {
express(options?: MiddlewareOptions): Function;
nest(options?: MiddlewareOptions): Function;
fastify(options?: MiddlewareOptions): Function;
koa(options?: MiddlewareOptions): Function;
database(options?: { logger: ApiStatsLogger; captureQueries?: boolean; maxQueryLength?: number }): DatabaseMiddleware;
}
export interface AutoInstrument {
setup(logger: ApiStatsLogger, options?: AutoInstrumentOptions): void;
}
// Framework-specific types
export namespace Express {
interface Request {
requestId?: string;
}
}
export namespace Fastify {
interface FastifyRequest {
requestId?: string;
}
}
export namespace Koa {
interface Context {
state: {
requestId?: string;
};
}
}
export default ApiStatsLogger;
}