@omniconvert/server-side-testing-sdk
Version:
TypeScript SDK for server-side A/B testing and experimentation
85 lines • 2.88 kB
JavaScript
;
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