UNPKG

@omniconvert/server-side-testing-sdk

Version:

TypeScript SDK for server-side A/B testing and experimentation

85 lines 2.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LoggerFactory = void 0; const BrowserLogger_1 = require("./BrowserLogger"); /** * Logger factory for creating and managing logger instances * Provides a singleton logger for the entire SDK */ class LoggerFactory { /** * Get the singleton logger instance */ static getLogger(outputToConsole = false) { if (!LoggerFactory.instance) { LoggerFactory.instance = new BrowserLogger_1.BrowserLogger(LoggerFactory.defaultLogLevel, 1000, outputToConsole); } return LoggerFactory.instance; } /** * Set a custom logger instance */ static setLogger(logger) { LoggerFactory.instance = logger; } /** * Create a new logger instance (without setting as singleton) */ static createLogger(logLevel = 'info', maxLogs = 1000, outputToConsole = false) { return new BrowserLogger_1.BrowserLogger(logLevel, maxLogs, outputToConsole); } /** * Set the default log level for new loggers */ static setDefaultLogLevel(level) { LoggerFactory.defaultLogLevel = level; // Update existing instance if it exists if (LoggerFactory.instance) { LoggerFactory.instance.setLogLevel(level); } } /** * Get the default log level */ static getDefaultLogLevel() { return LoggerFactory.defaultLogLevel; } /** * Reset the logger factory (clear singleton) */ static reset() { LoggerFactory.instance = null; } /** * Configure logger for development environment */ static configureForDevelopment() { LoggerFactory.setDefaultLogLevel('debug'); const logger = LoggerFactory.getLogger(true); // Enable console output for development logger.setMaxLogs(5000); // More logs for development logger.setConsoleOutput(true); } /** * Configure logger for production environment */ static configureForProduction() { LoggerFactory.setDefaultLogLevel('warning'); const logger = LoggerFactory.getLogger(false); // Disable console output for production logger.setMaxLogs(500); // Fewer logs for production logger.setConsoleOutput(false); } /** * Check if logging is enabled for a specific level */ static isLevelEnabled(level) { const logger = LoggerFactory.getLogger(); const levels = ['debug', 'info', 'notice', 'warning', 'error']; const currentLevelIndex = levels.indexOf(logger.getLogLevel()); const checkLevelIndex = levels.indexOf(level); return checkLevelIndex >= currentLevelIndex; } } exports.LoggerFactory = LoggerFactory; LoggerFactory.instance = null; LoggerFactory.defaultLogLevel = 'info'; //# sourceMappingURL=LoggerFactory.js.map