Bliss.js предоставляет мощные инструменты для организации и ведения логов в приложениях на JavaScript. Логирование является ключевым элементом отладки и мониторинга работы приложений, особенно при управлении сложными асинхронными процессами и событиями пользовательского интерфейса.
Bliss.js реализует несколько уровней логирования, которые позволяют структурировать сообщения и фильтровать их в зависимости от важности:
Каждый уровень логирования можно настроить отдельно, направляя сообщения в разные обработчики или хранилища.
Для работы с логами используется объект Logger. Он
создается через Bliss.logger() и поддерживает конфигурацию
нескольких каналов вывода:
const logger = Bliss.logger({
level: 'debug',
channels: {
console: { enabled: true },
file: { path: './logs/app.log', enabled: true }
}
});
Пояснения к конфигурации:
level — минимальный уровень сообщений, который будет
логироваться.channels — список каналов вывода. Каналы могут включать
консоль, файлы, удаленные серверы или пользовательские функции.После создания логгера, записи производятся через методы, соответствующие уровням логирования:
logger.debug('Инициализация модуля завершена');
logger.info('Пользователь вошел в систему');
logger.warn('Не удалось загрузить часть данных');
logger.error('Ошибка при сохранении файла');
logger.fatal('Сбой работы приложения');
Каждое сообщение автоматически сопровождается меткой времени и уровнем. Bliss.js поддерживает расширенные форматы:
logger.info({
message: 'Загрузка данных завершена',
module: 'DataService',
duration: '120ms'
});
Bliss.js эффективно обрабатывает асинхронные операции, обеспечивая последовательность логов даже при параллельном выполнении задач:
async function fetchData() {
try {
logger.debug('Начало запроса к серверу');
const response = await fetch('/api/data');
const data = await response.json();
logger.info({ message: 'Данные получены', data });
} catch (err) {
logger.error({ message: 'Ошибка запроса', error: err });
}
}
fetchData();
Асинхронные методы логгера гарантируют, что сообщения не теряются, даже если поток событий интенсивный.
Bliss.js позволяет настраивать формат сообщений с помощью шаблонов и фильтров:
logger.setFormat(({ level, message, time }) => `[${time}] [${level.toUpperCase()}]: ${message}`);
logger.setFilter((log) => log.level !== 'debug'); // исключить debug из вывода
Преимущества фильтров:
Bliss.js тесно интегрируется с манипуляциями DOM, позволяя отслеживать события и действия пользователей:
Bliss.on(document, 'click', 'button.trackable', (event) => {
logger.info({
message: 'Нажата кнопка',
id: event.target.id,
classes: event.target.className
});
});
Это позволяет вести подробный учет действий пользователей и анализировать поведение интерфейса.
Для долговременного хранения Bliss.js поддерживает файловое логирование с автоматической ротацией:
const fileLogger = Bliss.logger({
channels: {
file: {
path: './logs/app.log',
maxSize: 5 * 1024 * 1024, // 5 MB
maxFiles: 10
}
}
});
Параметры ротации позволяют ограничивать размер файла и количество архивов, предотвращая переполнение диска.
Bliss.js предоставляет возможность подключения кастомных обработчиков:
logger.addChannel('http', {
enabled: true,
send: (log) => fetch('https://logserver.com', {
method: 'POST',
body: JSON.stringify(log)
})
});
Это открывает возможность интеграции с внешними системами мониторинга, аналитики или алертинга.
debug
в разработке, warn/error в продакшене.Логирование в Bliss.js — это комплексный инструмент, который сочетает гибкость конфигурации, поддержку асинхронных операций и возможности интеграции с внешними сервисами, позволяя создавать устойчивые и отслеживаемые приложения.