Ведение журнала может быть бесценным инструментом для устранения неполадок и анализа использования приложений. Эти пакеты помогают упростить процесс.

Надлежащее ведение журнала является важным аспектом создания и поддержки функциональных веб-приложений. Это может помочь вам отслеживать ошибки, диагностировать проблемы с производительностью и понимать, как пользователи взаимодействуют с вашим приложением.

В Node.js есть множество пакетов ведения журналов, которые помогут вам создавать структурированные журналы и управлять ими. Здесь вы изучите лучшие пакеты ведения журналов, доступные в настоящее время в экосистеме Node.js, и узнаете, как их использовать.

1. Уинстон

Winston — это библиотека Node.js, которая обеспечивает гибкие функции ведения журналов, включая несколько транспортов. «Транспорт» — это носитель для хранения ваших журналов.

Winston поддерживает консольный, файловый и сетевой транспорт. Это означает, что вы можете распечатать свои журналы на консоли, записать их в файл или отправить по сети. Используя уровни ведения журнала Winston, вы можете создавать собственные транспорты и фильтровать журналы в зависимости от серьезности.

instagram viewer

Вы можете установить Winston как зависимость в каталоге вашего проекта, используя npm, менеджер пакетов JavaScript. Запустите эту команду:

нпм установить винстон

В приведенном ниже блоке кода показано, как настроить базовую систему ведения журнала с помощью Winston. Вы можете определить журналы для разных местоположений и различных уровней серьезности.

константа Уинстон = требовать("Уинстон");

// Регистратор Winston
константа регистратор = winston.createLogger({
уровень: 'Информация',
формат: winston.format.json(),
defaultMeta: { услуга: 'мой сервис' },
транспорт: [
новый Уинстон.транспортс. Консоль(),
новый Уинстон.транспортс. Файл({ имя файла: 'журнал ошибок', уровень: 'ошибка' }),
новый Уинстон.транспортс. Файл({ имя файла: 'объединенный .log' })
]
});

logger.info(— Привет, Уинстон!);
logger.warn(«Предупреждение: что-то может быть не так».);
регистратор.ошибка('Произошла ошибка.');

Этот код настраивает регистратор с тремя транспортами. Первый — это консольный транспорт, который будет выводить сообщения журнала на консоль. Второй — файловый транспорт, который будет записывать журналы с уровнем «ошибка» в файл «error.log». Третий — файловый транспорт, который будет записывать все журналы в файл «combined.log».

Регистратор по умолчанию настроен на ведение журнала на уровне «информация» и включает объект метаданных по умолчанию с полем «сервис», установленным на «мой-сервис».

Затем код регистрирует три сообщения, используя регистратор на уровнях «информация», «предупреждение» и «ошибка» соответственно. Эти сообщения будут выводиться на консоль и в соответствующие файлы журнала в соответствии с конфигурацией транспорта.

2. Морган

Morgan — это промежуточное ПО для ведения журнала для Node.js, которое предоставляет базовые возможности ведения журнала запросов. Он разработан, чтобы быть легким и простым в использовании. Морган перехватывает HTTP-запросы и регистрирует соответствующую информацию, такую ​​как метод запроса, URL-адрес, код состояния и т. д.

Одним из ключевых преимуществ Morgan является его простота. Вы можете добавить его в приложение Node.js с помощью нескольких строк кода, так как для его настройки не требуется дополнительная настройка.

Morgan поддерживает несколько форматов регистрации, в том числе общий, комбинированный, короткий, крошечный, и разработчик форматы, что позволяет выбрать тот, который лучше всего соответствует вашим потребностям.

Вы можете установить Morgan как зависимость в каталоге вашего проекта, выполнив эту команду:

нпм установить Морган

Этот код показывает, как использовать Morgan в экспресс-заявка:

константа экспресс = требовать("выражать");
константа Морган = требовать("морган");
константа приложение = экспресс();

app.use (морган("разработчик"));

приложение.получить("/", (запрос, разрешение) => {
рес.отправить("Привет, мир!");
});

приложение.слушай(3000, () => консоль.бревно(`Приложение запущено`));

Код инициализирует Morgan с помощью разработчик формат. Когда вы отправляете запрос GET к корневому маршруту (/), Морган записывает сведения об этом запросе в консоль.

Несмотря на свою простоту, Morgan — это мощный пакет ведения журналов, который предоставляет необходимые возможности ведения журналов запросов для приложений Node.js.

3. Пино

Pino — это популярный и легкий пакет ведения журналов для приложений Node.js, который может похвастаться высокой производительностью и низкими накладными расходами, как указано в их ориентиры.

Pino поддерживает несколько типов транспорта, которые легко расширяются с помощью пользовательских транспортов. Одной из ключевых особенностей Pino является возможность регистрации сообщений в формате JSON, что упрощает их разбор и анализ.

Использование Pino зависит от платформы Node.js; вы можете установить Pino как зависимость в каталоге вашего проекта Express, выполнив следующую команду:

npm установить пино-http

Для разных фреймворков проверьте Пино документация.

Этот блок кода показывает использование Pino в приложении Express:

константа экспресс = требовать("выражать");
константа приложение = экспресс();
константа пино = требовать('пино-http')()

app.use (пино)

приложение.получить("/", (запрос, разрешение) => {
пино (рек, рез) // регистрирует запрос и ответ
req.log.info(«корневой маршрут») // регистрирует дополнительную информацию
рес.отправить("Привет, мир!");
});

приложение.слушай(3000, () => консоль.бревно(`Приложение запущено`));

Этот код инициализирует Pino и регистрирует его как промежуточное ПО. Когда вы отправляете запрос GET на корневой маршрут (/), Pino регистрирует детали вашего запроса и его ответ на консоль.

4. Отлаживать

Debug — это пакет ведения журнала для Node.js, созданный по образцу метода отладки ядра Node.js. Он предоставляет упрощенное решение для ведения журнала, которое позволяет выборочно включать или отключать ведение журнала без изменения кода, что упрощает отладку и устранение неполадок.

Отладка также позволяет вам устанавливать пространства имен журналов, которые обеспечивают иерархическую структуру ваших журналов на основе компонентов и модулей в вашем приложении, упрощая их фильтрацию и поиск. Кроме того, Debug предлагает различные уровни ведения журнала, такие как ошибка, предупреждение и информация, которые вы можете использовать для определения приоритетов и фильтрации их журналов.

Вы можете установить Debug как зависимость в каталоге вашего проекта с помощью этой команды:

отладка установки npm

Этот код показывает использование Debug в приложении Express:

константа экспресс = требовать('выражать');

// Импорт отладки и создание пространства имен
константа отладка = требовать('отлаживать')('myapp: сервер');

константа приложение = экспресс();
константа порт = процесс.env. ПОРТ || 3000;

приложение.получить('/', (запрос, разрешение) => {
отлаживать('Получен запрос на /');
рес.отправить('Привет, мир!');
});

app.listen (порт, () => {
отлаживать(`Сервер прослушивает порт ${порт}`);
});

Код создает пространство имен, мое приложение: сервер. Это пространство имен будет различать журналы, связанные с вашим «сервер” из тех, которые связаны с другими модулями с другим пространством имен в вашем приложении.

Запустите эту команду, чтобы запустить отладку:

DEBUG=myapp:* узел server.js

Эта команда выше будет соответствовать любому сообщению журнала с пространством имен, которое начинается с мое приложение:. Если вы хотите видеть только журналы, связанные с вашим сервер модуль, вы можете установить ОТЛАЖИВАТЬ переменная среды для мое приложение: сервер.

Еще одним преимуществом Debug является его совместимость с другими пакетами протоколирования, такими как Winston.

Выбор пакета ведения журнала

Выбор пакета ведения журналов — важное решение, которое может значительно повлиять на эффективность и результативность вашего процесса отладки. Важно учитывать такие факторы, как функции и возможности пакета, его совместимость с вашим языком программирования и средой разработки, а также простота использования и конфигурация.

В конечном счете, выбор пакета ведения журналов будет зависеть от конкретных потребностей и требований вашего проекта.