UNPKG

@sixbell-telco/sdk

Version:

A collection of reusable components designed for use in Sixbell Telco Angular projects

124 lines (123 loc) 4.11 kB
import type { LoggerConfig, LoggerContext, LogLevel } from './models/logger'; import * as i0 from "@angular/core"; export declare class LoggerService { private config; private logStore; private darkModeMediaQuery; private darkModeListenerInitialized; private idbReady; /** * Initialize automatic dark mode detection based on system preferences * Only called when logging is enabled to minimize performance impact */ private initializeDarkModeDetection; configure(config: Partial<LoggerConfig>): void; /** * Get all stored logs (useful for sending to external services) */ getStoredLogs(): { timestamp: number; level: LogLevel; message: string; context?: LoggerContext; error?: Error; }[]; /** * Clear stored logs */ clearStoredLogs(): void; /** * Initialize IndexedDB for persistent log storage * Only called when persistToIndexedDB is enabled */ private initializeIndexedDB; /** * Persist a log entry to IndexedDB */ private persistLogToIndexedDB; /** * Clean up old logs based on retention policy (days and max count) */ private cleanupOldLogs; /** * Retrieve logs from IndexedDB */ getPersistedLogs(): Promise<Array<{ id?: number; timestamp: number; level: LogLevel; message: string; context?: LoggerContext; error?: { name: string; message: string; stack?: string; }; }>>; /** * Clear persisted logs from IndexedDB */ clearPersistedLogs(): Promise<void>; /** * Download logs as a JSON file * Combines in-memory logs with persisted IndexedDB logs */ downloadLogs(filename?: string): Promise<void>; /** * Update theme mode for color adjustment * If you want to restore automatic detection, pass undefined * * @param isDark true for dark mode, false for light mode, undefined to use system preference */ setDarkMode(isDark: boolean | undefined): void; /** * Get current dark mode status */ isDarkMode(): boolean; /** * Create a temporary logger with override configuration. * Useful for local use-case-specific logging without global provider changes. * * @param overrideConfig Configuration that overrides current logger settings * @returns A new LoggerService instance with merged config * * @example * ```typescript * // In theme service: * private readonly logger = inject(LoggerService); * * // For this specific operation, use debug level: * const debugLogger = this.logger.withConfig({ logLevel: 'debug' }); * debugLogger.debug('Detailed operation trace'); * * // Back to global config: * this.logger.debug('This respects global config'); * ``` */ withConfig(overrideConfig: Partial<LoggerConfig>): LoggerService; private shouldLog; private getColors; private getContextColor; private getTimestampColor; private storeLog; /** * Extract component name from message pattern like "[ComponentName] message" * and return formatted parts for colored logging */ private formatMessageWithContext; /** * Format complete log output with level, timestamp, context, and message * Returns array of format string and all styles for console output */ private formatCompleteLogOutput; trace(message: string, context?: LoggerContext): void; debug(message: string, context?: LoggerContext): void; info(message: string, context?: LoggerContext): void; warn(message: string, context?: LoggerContext): void; error(message: string, error?: Error, context?: LoggerContext): void; fatal(message: string, error?: Error, context?: LoggerContext): void; private reportToExternal; private createContext; static ɵfac: i0.ɵɵFactoryDeclaration<LoggerService, never>; static ɵprov: i0.ɵɵInjectableDeclaration<LoggerService>; }