adonis-forge
Version:
Bundle utils for AdonisJS
70 lines (69 loc) • 1.9 kB
TypeScript
export interface PinoLogEntry {
level: number;
time: string;
msg: string;
pid?: number;
hostname?: string;
name?: string;
err?: {
type?: string;
message?: string;
stack?: string;
};
req?: {
id?: string;
method?: string;
url?: string;
remoteAddress?: string;
remotePort?: number;
};
res?: {
statusCode?: number;
};
responseTime?: number;
_isPlainText?: boolean;
[key: string]: any;
}
export interface LogReadOptions {
maxLines?: number;
keyword?: string;
logLevel?: LogLevel;
minLevel?: number;
reverse?: boolean;
fields?: string[];
}
export interface LogReadResult {
logs: PinoLogEntry[];
totalProcessed: number;
totalMatched: number;
}
export interface LogStreamSummary {
totalMatched: number;
totalProcessed: number;
}
export interface LogStats {
totalLines: number;
validLogLines: number;
levelCounts: Record<string, number>;
timeRange: {
start: Date | null;
end: Date | null;
};
fileSize: number;
}
export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
export type LogDataCallback = (logEntry: PinoLogEntry, matchCount: number, processedCount: number) => void;
export type LogEndCallback = (summary: LogStreamSummary) => void;
export declare class PinoLogReader {
private readonly levelMap;
readLogs(filePath: string, options?: LogReadOptions): Promise<LogReadResult>;
readLogsStream(filePath: string, options: LogReadOptions | undefined, onData: LogDataCallback, onEnd?: LogEndCallback): void;
private readLogsReverse;
private parseLine;
private shouldIncludeLog;
private getSearchText;
private getNestedValue;
private getTargetLevel;
getLogStats(filePath: string): Promise<LogStats>;
private getLevelName;
}