/** * Get a logger instance * @param name Logger name * @param options Options with logging settings * @returns Logger instance */ export function getLogger(name: string, options: { enableLogging?: boolean; logLevel?: 'debug' | 'info' | 'warn' | 'error'; }): any { if (!options.enableLogging) { // Return no-op logger if logging is disabled return { debug: () => {}, info: () => {}, warn: () => {}, error: () => {}, }; } try { // Try to use a logger from @unidev-hub/logger if available return require('@unidev-hub/logger').getLogger(name); } catch (error) { // Fallback to console return { debug: (message: string, data?: any) => { if (shouldLog('debug', options.logLevel)) { console.debug(`[${name}] ${message}`, data); } }, info: (message: string, data?: any) => { if (shouldLog('info', options.logLevel)) { console.info(`[${name}] ${message}`, data); } }, warn: (message: string, data?: any) => { if (shouldLog('warn', options.logLevel)) { console.warn(`[${name}] ${message}`, data); } }, error: (message: string, data?: any) => { if (shouldLog('error', options.logLevel)) { console.error(`[${name}] ${message}`, data); } }, }; } } /** * Check if a log level should be logged * @param level Log level to check * @param configLevel Configured log level * @returns True if the level should be logged */ function shouldLog( level: 'debug' | 'info' | 'warn' | 'error', configLevel?: 'debug' | 'info' | 'warn' | 'error' ): boolean { const levels = ['debug', 'info', 'warn', 'error']; const configLevelIndex = levels.indexOf(configLevel || 'info'); const logLevelIndex = levels.indexOf(level); return logLevelIndex >= configLevelIndex; }