Усильте свой вход в Node.js

Усильте свой вход в Node.js

10 мая 2022 г.

Ведение журнала является неотъемлемой частью создания, отладки и обслуживания вашего приложения Node.js. Анализируя журналы, вы можете понять, что происходит в коде, чтобы быстро выявлять и устранять проблемы и находить возможности для улучшений. Когда следует вести журнал, из чего состоит хорошее сообщение журнала и какую библиотеку журналов следует использовать? На эти и другие вопросы мы ответим в этом посте, чтобы вы могли усилить ведение журнала.


Когда я должен войти?


Правильный уровень журнала


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


  • Ошибка: Что-то пошло не так, после чего ваше приложение может или не может восстановиться.

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

  • Информация: Информативные общие журналы. Обычное использование — это интересные события времени выполнения для конкретного приложения, например, когда вызывается конечная точка API.

  • Отладка: Журналы, полезные для целей отладки, но не представляющие особого интереса. Обычно включается/выключается с помощью какой-либо механики, такой как переменная среды, когда это необходимо. Обычно содержит более подробную информацию, чем info.

В Node.js API для этих методов выглядит одинаково, когда вы передаете «сообщение» и необязательные «данные».


```javascript


// Примеры


const exception = / Какая-то ошибка из стороннего API /


console.error("Что-то пошло не так", исключение);


const user = {id: 99, имя: «Саймон», платформа: «Node.js»};


console.info("/getUser вызывается для пользователя с ID:", user.id);


Меньше - больше?


Записывать только полезные данные. Добавлять журналы легко, но слишком много журналов затруднит просмотр интересного. Прежде чем добавлять логлайн, подумайте, что полезно, а что нет. Стоимость также может иметь значение, в зависимости от настроек. Чрезмерное ведение журнала может увеличить ваш счет!


Что я должен регистрировать?


Ответ на этот вопрос зависит от контекста, но есть определенные методы, которые мы можем применить ко всем сообщениям журнала. Самое главное, сообщение должно быть уникальным и описательным.


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


А что делает описательное сообщение? Опять же, это контекстуально, но давайте посмотрим на пример. Здесь мы отправили запрос на сервер и получили ответ об ошибке.


```javascript


Не удалось разобрать ответ


Это не очень описательно. Что еще мы должны разумно регистрировать? Более описательное сообщение журнала может выглядеть так:


```javascript


Не удалось проанализировать ответ от URL-адреса «https://api.com» с кодом «500» и сообщением «Внутренняя ошибка».


Библиотеки протоколирования


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


Уинстон


Возможно, самая популярная библиотека ведения журналов Node.js [winston] (https://github.com/winstonjs/winston) предоставляет простой API для регистрации сообщений в файлы, консоли и другие места назначения. Он также включает поддержку различных уровней ведения журнала, которые вы можете использовать для управления количеством регистрируемых сведений. Winston позиционирует себя как «Логгер практически для всего».


пино


«Журнал Node.js с очень низкими накладными расходами» — так описывает себя pino. Он утверждает, что работает в 5 раз быстрее, чем альтернативы, и использует асинхронное ведение журнала, которое он приписывает своей скорости. Сообщения журналов буферизуются, а затем записываются фрагментами, в отличие от блокирующего ведения журнала, когда сообщения записываются непосредственно в выходной поток.


Баньян


bunyan утверждает, что журналы должны быть структурированы и что JSON — хороший формат для этого. Он описывает себя как «простую и быструю библиотеку ведения журналов JSON» и имеет все функции, которые вы ожидаете от библиотеки ведения журналов, включая сериализаторы и поддержку различных сред выполнения, включая Node.js, Browserify и Webpack.


Вывод


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


Первоначально опубликовано здесь



Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE