logs-interceptor
Version:
High-performance, production-ready log interceptor for Node.js applications with Loki integration. Built with Clean Architecture principles. Supports Node.js, Browser, and Node-RED.
35 lines • 1.42 kB
TypeScript
/**
* Infrastructure: LokiLogRepository
* Concrete implementation of ILogRepository for Grafana Loki
*/
import { ILogRepository, RepositoryHealth } from '../../domain/repositories/ILogRepository';
import { LogEntry } from '../../domain/entities/LogEntry';
import { ICircuitBreakerService } from '../../domain/services/ICircuitBreakerService';
import { IHttpClient } from '../http/IHttpClient';
import { ILokiFormatter } from '../formatters/ILokiFormatter';
export interface LokiRepositoryConfig {
readonly url: string;
readonly tenantId: string;
readonly authToken?: string;
readonly timeout?: number;
readonly maxRetries?: number;
readonly retryDelay?: number;
readonly compression?: boolean;
readonly compressionLevel?: number;
}
export declare class LokiLogRepository implements ILogRepository {
private readonly config;
private readonly httpClient;
private readonly formatter;
private readonly circuitBreaker;
private buffer;
private errorCount;
private lastSuccessfulFlush?;
constructor(config: LokiRepositoryConfig, httpClient: IHttpClient, formatter: ILokiFormatter, circuitBreaker: ICircuitBreakerService);
save(entry: LogEntry): Promise<void>;
saveBatch(entries: LogEntry[]): Promise<void>;
flush(): Promise<void>;
getHealth(): Promise<RepositoryHealth>;
private buildHeaders;
}
//# sourceMappingURL=LokiLogRepository.d.ts.map