Lighthouse — это мощный инструмент для аудита веб-приложений, разработанный Google, который позволяет анализировать производительность, доступность, SEO и лучшие практики веб-разработки. Эффективное логирование играет ключевую роль при работе с Lighthouse, особенно когда речь идет о программном использовании через Node.js API или кастомных скриптах для автоматизации.
Lighthouse использует встроенную систему логирования, основанную на уровне логов и консольных сообщениях. Основные уровни логирования:
Уровень логирования указывается при запуске программы через объект конфигурации:
const lighthouse = require('lighthouse');
const chromeLauncher = require('chrome-launcher');
(async () => {
const chrome = await chromeLauncher.launch({ chromeFlags: ['--headless'] });
const options = {
port: chrome.port,
logLevel: 'info'
};
const runnerResult = await lighthouse('https://example.com', options);
await chrome.kill();
})();
В примере выше logLevel: ‘info’ обеспечивает вывод стандартных сообщений о запуске, прогрессе и завершении аудита.
Для более гибкого контроля можно использовать собственные логгеры.
Lighthouse поддерживает возможность подмены стандартного
console.log через объект config.settings.
Пример:
const customLogger = {
log: (message) => {
// Пример: запись в файл
require('fs').appendFileSync('lighthouse.log', message + '\n');
},
warn: (message) => {
console.warn('[WARN]', message);
},
error: (message) => {
console.error('[ERROR]', message);
}
};
const options = {
port: chrome.port,
logLevel: 'silent',
outputLogger: customLogger
};
Такой подход позволяет интегрировать Lighthouse в существующую систему мониторинга или CI/CD пайплайн, сохраняя все логи в нужном формате.
Lighthouse генерирует события во время выполнения аудита. Используя API Node.js, можно подписываться на эти события для отслеживания прогресса или выполнения определенных действий при ошибках:
const { EventEmitter } = require('events');
const eventEmitter = new EventEmitter();
eventEmitter.on('lh:status', (status) => {
console.log('Статус:', status);
});
eventEmitter.on('lh:error', (error) => {
console.error('Ошибка Lighthouse:', error);
});
Каждый ключевой этап аудита (запуск Chrome, загрузка страницы, вычисление метрик) сопровождается событиями, которые могут быть полезны для детального анализа производительности.
Логирование становится критически важным при использовании Lighthouse в автоматических тестах. Настройка CI/CD пайплайна требует:
warn или error, чтобы уменьшить шум.Пример использования с Jest:
test('Lighthouse audit', async () => {
const runnerResult = await lighthouse('https://example.com', { logLevel: 'warn' });
const reportJson = runnerResult.report;
require('fs').writeFileSync('report.json', reportJson);
});
Такой подход позволяет автоматически фиксировать критические проблемы без лишнего потока информации в консоли.
Эффективная настройка логирования в Lighthouse обеспечивает прозрачность работы, облегчает отладку и повышает надежность аудита веб-приложений.