@just-in/core
Version:
A TypeScript-first framework for building adaptive digital health interventions.
86 lines • 3.29 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Log = exports.logLevels = void 0;
exports.setLogger = setLogger;
exports.setLogLevels = setLogLevels;
const console_logger_1 = require("./console.logger");
/** Default logger configuration using ConsoleLogger. */
let activeLogger = console_logger_1.ConsoleLogger;
/** Configuration for enabling or disabling specific log levels. */
exports.logLevels = {
info: true,
warn: true,
error: true,
dev: true,
};
/**
* Sets a custom logger to replace the default ConsoleLogger.
* If no method is provided by the custom logger, the default ConsoleLogger method will be used.
* @param {Partial<Logger>} logger - The custom logger implementation to use.
*/
function setLogger(logger) {
activeLogger = {
info: logger.info || console_logger_1.ConsoleLogger.info,
warn: logger.warn || console_logger_1.ConsoleLogger.warn,
error: logger.error || console_logger_1.ConsoleLogger.error,
dev: logger.dev || console_logger_1.ConsoleLogger.dev,
};
}
/**
* Updates the log levels that are enabled or disabled.
* Allows selective control over which log levels should be active.
* @param {Partial<typeof logLevels>} levels - An object specifying the log levels to enable or disable.
* @example
* // Enable only error and debug logs
* setLogLevels({ info: false, warn: false, error: true, debug: true });
*/
function setLogLevels(levels) {
Object.assign(exports.logLevels, levels);
}
/**
* Provides a unified logging interface that respects log level configuration.
* Each log method will only output if its corresponding log level is enabled.
*/
exports.Log = {
/**
* Logs an informational message if `info` logging is enabled.
* @param {string} message - The message to log.
* @param {...any[]} optionalParams - Additional parameters for the log.
*/
info(message, ...optionalParams) {
if (exports.logLevels.info && activeLogger.info) {
activeLogger.info(message, ...optionalParams);
}
},
/**
* Logs a warning message if `warn` logging is enabled.
* @param {string} message - The message to log.
* @param {...any[]} optionalParams - Additional parameters for the log.
*/
warn(message, ...optionalParams) {
if (exports.logLevels.warn && activeLogger.warn) {
activeLogger.warn(message, ...optionalParams);
}
},
/**
* Logs an error message if `error` logging is enabled.
* @param {string} message - The message to log.
* @param {...any[]} optionalParams - Additional parameters for the log.
*/
error(message, ...optionalParams) {
if (exports.logLevels.error && activeLogger.error) {
activeLogger.error(message, ...optionalParams);
}
},
/**
* Logs a message if `dev` logging is enabled and env var NODE_ENV === 'dev'.
* @param {string} message - The message to log.
* @param {...any[]} optionalParams - Additional parameters for the log.
*/
dev(message, ...optionalParams) {
if (exports.logLevels.dev && activeLogger.dev) {
activeLogger.dev(message, ...optionalParams);
}
}
};
//# sourceMappingURL=logger-manager.js.map