@sixbell-telco/sdk
Version:
A collection of reusable components designed for use in Sixbell Telco Angular projects
124 lines (123 loc) • 4.11 kB
TypeScript
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>;
}