tsvesync
Version:
A TypeScript library for interacting with VeSync smart home devices
102 lines (101 loc) • 2.93 kB
JavaScript
;
/**
* Logger module for VeSync library
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.logger = exports.LogLevel = void 0;
exports.setLogger = setLogger;
exports.resetLogger = resetLogger;
exports.getLogger = getLogger;
exports.setLogLevel = setLogLevel;
exports.getLogLevel = getLogLevel;
var LogLevel;
(function (LogLevel) {
LogLevel[LogLevel["DEBUG"] = 0] = "DEBUG";
LogLevel[LogLevel["INFO"] = 1] = "INFO";
LogLevel[LogLevel["WARN"] = 2] = "WARN";
LogLevel[LogLevel["ERROR"] = 3] = "ERROR";
LogLevel[LogLevel["NONE"] = 4] = "NONE";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
class DefaultLogger {
constructor() {
this.currentLevel = LogLevel.INFO;
}
setLevel(level) {
this.currentLevel = level;
}
getLevel() {
return this.currentLevel;
}
debug(message, ...args) {
if (this.currentLevel <= LogLevel.DEBUG) {
console.debug(`[DEBUG] ${message}`, ...args);
}
}
info(message, ...args) {
if (this.currentLevel <= LogLevel.INFO) {
console.info(`[INFO] ${message}`, ...args);
}
}
warn(message, ...args) {
if (this.currentLevel <= LogLevel.WARN) {
console.warn(`[WARN] ${message}`, ...args);
}
}
error(message, ...args) {
if (this.currentLevel <= LogLevel.ERROR) {
console.error(`[ERROR] ${message}`, ...args);
}
}
}
// Default logger implementation
const defaultLogger = new DefaultLogger();
// Current logger instance
let currentLogger = defaultLogger;
/**
* Set a custom logger implementation
* @param customLogger - Custom logger implementation
*/
function setLogger(customLogger) {
currentLogger = customLogger;
}
/**
* Reset to default logger
*/
function resetLogger() {
currentLogger = defaultLogger;
}
/**
* Get the current logger instance
*/
function getLogger() {
return currentLogger;
}
/**
* Set the log level (only works with default logger)
* @param level - The log level to set
*/
function setLogLevel(level) {
if (currentLogger === defaultLogger) {
currentLogger.setLevel(level);
}
}
/**
* Get the current log level (only works with default logger)
* @returns The current log level or undefined if using custom logger
*/
function getLogLevel() {
if (currentLogger === defaultLogger) {
return currentLogger.getLevel();
}
return undefined;
}
// Export the logger interface for use throughout the application
exports.logger = {
debug: (message, ...args) => currentLogger.debug(message, ...args),
info: (message, ...args) => currentLogger.info(message, ...args),
warn: (message, ...args) => currentLogger.warn(message, ...args),
error: (message, ...args) => currentLogger.error(message, ...args),
setLevel: (level) => setLogLevel(level),
getLevel: () => getLogLevel()
};