solver-sdk
Version:
SDK для интеграции с Code Solver Backend API
106 lines • 3.62 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogLevel = void 0;
exports.createWebSocketLogger = createWebSocketLogger;
exports.createNullLogger = createNullLogger;
/**
* Уровни логирования
*/
var LogLevel;
(function (LogLevel) {
LogLevel["DEBUG"] = "debug";
LogLevel["INFO"] = "info";
LogLevel["WARN"] = "warn";
LogLevel["ERROR"] = "error";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
/**
* Реализация логгера
*/
class LoggerImpl {
/**
* Создает новый логгер
* @param component Название компонента
* @param logFn Функция логирования
*/
constructor(component, logFn) {
this.component = component;
this.logFn = logFn;
}
/**
* Логирует отладочное сообщение
* @param message Сообщение для логирования
* @param data Дополнительные данные
*/
debug(message, data) {
this.logFn(LogLevel.DEBUG, `[${this.component}] ${message}`, data);
}
/**
* Логирует информационное сообщение
* @param message Сообщение для логирования
* @param data Дополнительные данные
*/
info(message, data) {
this.logFn(LogLevel.INFO, `[${this.component}] ${message}`, data);
}
/**
* Логирует предупреждение
* @param message Сообщение для логирования
* @param data Дополнительные данные
*/
warn(message, data) {
this.logFn(LogLevel.WARN, `[${this.component}] ${message}`, data);
}
/**
* Логирует ошибку
* @param message Сообщение для логирования
* @param data Дополнительные данные
*/
error(message, data) {
this.logFn(LogLevel.ERROR, `[${this.component}] ${message}`, data);
}
/**
* Создает новый логгер с указанным префиксом
* @param prefix Префикс для нового логгера
* @returns Новый логгер с префиксом
*/
withPrefix(prefix) {
return new LoggerImpl(`${this.component}:${prefix}`, this.logFn);
}
}
/**
* Функция логирования по умолчанию
*/
const defaultLogFunction = (level, message, data) => {
if (level === LogLevel.ERROR) {
console.error(message, data);
}
else if (level === LogLevel.WARN) {
console.warn(message, data);
}
else if (level === LogLevel.INFO) {
console.info(message, data);
}
else if (level === LogLevel.DEBUG) {
if (process.env.NODE_ENV === 'development') {
console.debug(message, data);
}
}
};
/**
* Создает новый логгер для WebSocket клиента
* @param component Название компонента
* @param logFn Функция логирования
* @returns Новый логгер
*/
function createWebSocketLogger(component, logFn = defaultLogFunction) {
return new LoggerImpl(component, logFn);
}
/**
* Создает новый логгер с пустой функцией логирования
* @param component Название компонента
* @returns Новый логгер
*/
function createNullLogger(component) {
return new LoggerImpl(component, () => { });
}
//# sourceMappingURL=logger.js.map
;