openoracle-sdk-js
Version:
OpenOracle Node.js SDK - Intelligent Oracle Routing with Multiple LLM Providers
58 lines (56 loc) • 2.18 kB
TypeScript
import { OracleConfig } from '../core/config';
export interface LogContext {
provider?: string;
requestId?: string;
userId?: string;
operation?: string;
duration?: number;
error?: Error;
metadata?: Record<string, any>;
}
export declare class OracleLogger {
private readonly logger;
private readonly config;
constructor(config: OracleConfig);
private createWinstonLogger;
private parseSize;
debug(message: string, context?: LogContext): void;
info(message: string, context?: LogContext): void;
warn(message: string, context?: LogContext): void;
error(message: string, context?: LogContext): void;
private formatContext;
logPerformance(operation: string, duration: number, context?: LogContext): void;
logProviderQuery(provider: string, query: string, success: boolean, duration: number, error?: Error): void;
logApiRequest(method: string, url: string, statusCode: number, duration: number, requestId?: string): void;
logUserActivity(userId: string, action: string, details?: Record<string, any>): void;
logSecurityEvent(event: string, severity: 'low' | 'medium' | 'high' | 'critical', details?: Record<string, any>): void;
logBusinessEvent(event: string, value?: number, context?: LogContext): void;
child(defaultContext: LogContext): OracleLogger;
flush(): Promise<void>;
}
/**
* Get the global logger instance
*/
export declare function getLogger(config?: OracleConfig): OracleLogger;
/**
* Set the global logger instance
*/
export declare function setLogger(logger: OracleLogger): void;
/**
* Create a performance timer
*/
export declare function createTimer(operation: string, logger?: OracleLogger): () => void;
/**
* Decorator for automatic performance logging
*/
export declare function logPerformance(operation?: string): (target: any, propertyName: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
/**
* Structured logging helpers
*/
export declare const LogLevel: {
readonly DEBUG: "debug";
readonly INFO: "info";
readonly WARN: "warn";
readonly ERROR: "error";
};
export type LogLevelType = typeof LogLevel[keyof typeof LogLevel];