Что такое логи в программировании
Перейти к содержимому

Что такое логи в программировании

  • автор:

Лог-файл

Лог (log) — это текстовый файл, куда автоматически записывается важная информация о работе системы или программы. Чаще всего говорят о логах сервера. Их записывает программное обеспечение, которое управляет внутренней частью сайта или онлайн-системы. Лог-файл — своеобразный журнал событий.

«IT-специалист с нуля» наш лучший курс для старта в IT

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

Лог файл

Лог-файл (log file) содержит в себе информацию в сокращенном формате. Для обычного пользователя это непонятный набор символов. Но у записей есть смысл, и специалисты должны уметь читать их — в файлах много важной информации о работе.

Профессия / 8 месяцев
IT-специалист с нуля

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

Для чего нужны логи

Устранение неполадок. По логам можно понять, когда и из-за чего в работе системы возник сбой. А когда станет понятна причина, устранить его будет легче.

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

Проверка стабильности. Даже если с системой все хорошо, рекомендуется периодически проверять ее логи. Так можно на ранних этапах найти уязвимость или недочет — еще до того, как он станет проблемой.

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

Маркетинг. Логи — источник ценной информации для развития сайта. Они позволяют собрать статистику по посещаемости с «сырыми» техническими данными. Например, понять, откуда приходят пользователи, где они находятся и какими устройствами пользуются для визита.

Читайте также Как выбрать IT-специальность в новых реалиях?

Какими бывают логи

Информации в логах много, поэтому для каждого типа сведений существует свой лог-файл. Возьмем для примера логи веб-сервера. Вот какими они могут быть:

Лог-файл WinGate

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

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

Станьте Fullstack-разработчик на Python и найдите стабильную работу
на удаленке

Что может содержаться в логах

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

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

Как правильно читать лог

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

Например, так выглядит формат по умолчанию для лога доступа с веб-сервера:

[доменное имя сайта][IP-адрес пользователя][дата и время визита][тип запроса][URL, к которому обратился пользователь][протокол, по которому пользователь соединился с сайтом][код ответа сервера][количество байт информации, которую передали пользователю][дополнительная информация]

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

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

С помощью анализатора. Второй вариант — не просматривать лог вручную, а воспользоваться специальной программой-анализатором. Она парсит лог-файл — «разбирает» его на составляющие и представляет в удобном для пользователя виде. Так информация показывается в виде понятного отчета, иногда с графиками и диаграммами.

Анализаторы бывают разными, например Weblog Expert, Analog и пр. Некоторые из них также умеют интегрироваться с сервисами для сбора статистики, чтобы показывать более полную картинку.

С помощью анализатора логов Weblog Expert можно легко смотреть записи ошибок

Проверять и читать логи вам понадобится, если вы будете работать с профессиональным ПО для разработчиков, вебмастеров или инженеров. Это сложно только с первого взгляда — если понять принцип, расшифровать их не составит труда. А анализаторы помогут лучше и быстрее сориентироваться в записях.

Таблица лог-файлов

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

Таблицы для файлов ошибок обычно состоят из следующих столбцов:

  1. Время и дата: Дата и время возникновения ошибки. Это позволяет определить последовательность ошибок и выявить временные интервалы, в которые они происходят.
  2. Уровень ошибки: Уровень критичности ошибки, выраженный текстом (например, DEBUG, INFO, WARNING, ERROR, CRITICAL). Это помогает классифицировать ошибки по степени их важности и срочности исправления.
  3. Компонент: Идентификатор или название компонента, в котором произошла ошибка. Это может быть имя модуля, функции, сервиса или другой части программы, что помогает быстро локализовать проблему.
  4. Сообщение об ошибке: Текстовое описание самой ошибки. Здесь обычно указывается информация о том, что пошло не так, и какие конкретно ошибки произошли.
  5. Пользователь: Информация о пользователе, если применимо. Например, это может быть идентификатор пользователя, который испытал ошибку.
  6. Дополнительные атрибуты: В зависимости от характера и требований логирования, таблицы для файлов ошибок могут содержать дополнительные столбцы, такие как IP-адрес клиента, версия программного обеспечения, тип операционной системы и другие атрибуты, которые могут быть полезны для диагностики и анализа ошибок.

Пример таблицы для файлов ошибок:

Время и дата Уровень ошибки Компонент Сообщение об ошибке Пользователь IP-адрес
2023-08-05 09:15:27 ERROR MainApp Ошибка при сохранении данных в базу данных User123 192.168.1.100
2023-08-05 09:16:42 WARNING MainApp Недостаточно свободного места на диске 192.168.1.102
2023-08-05 09:17:10 CRITICAL Database Сбой при подключении к базе данных Admin 192.168.1.103
2023-08-05 09:18:55 ERROR MainApp Ошибка валидации данных пользователя User456 192.168.1.104
2023-08-05 09:19:30 DEBUG MainApp Дополнительные данные для отладки 192.168.1.105

Таблица для лог-файлов

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

Узнать больше о сетевых технологиях и получить новую профессию вы можете на курсах. Записывайтесь и станьте востребованным IT-специалистом.

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Логирование: понятие, механизмы и уровни

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

Логирование файлов

Что такое логи?

Лог (log) — это хронологическая запись наиболее значимой информации о работе системы. Подобная фиксация событий дает представление и том, что происходило в системе, в какой именно момент, какой пользователь спровоцировал то или иное событие, какие ошибки возникли и т.д.

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

Типы логов

В зависимости от того, информация какого типа фиксируется системой, формируются разные типы записей. Поэтому логи делятся на: системные, серверные, почтовые, логи аутентификации, авторизации, log file приложений, баз данных и т.д. Подобная группировка помогает быстрее находить нужный лог и оптимизировать работу с ним.

Еще существует разделение логов в порядке их значимости для ситуационной ошибки:

  • Срочное исправление — Fatal error
  • Ошибки, не влияющие на пользователя — Not critical error
  • События, требующие внимания — Warning
  • Информация о вызовах сервера — Initial information

Что такое логирование?

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

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

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

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

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

Механизмы записи информации

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

Для формирования журналов логирования программисты используют разные механизмы фиксации информации:

  1. Самый понятный и распространенный механизм — запись логов в текстовый файл. Это запись каждого события отдельной строкой.Подобные журналы легко читать, открыв файл в любом текстовом редакторе.
  2. Более углубленный лог — когда одно событие записывается несколькими строками, например, журнал ошибок. Такие записи имеют сложную многоступенчатую структуру, в которой человеку легко пропустить важную информацию. Поэтому для чтения этого вида log files используются специальные программы.
  3. Бинарный — самый сложный механизм записи файлов. Обычно такие логи обрабатываются тем же программным обеспечением, что и ПО, их записывающее.
  4. Приложения, использующие БД или сами СУБД. Основным недостатком такой фиксации является вероятность замедления работы базы данных из-за интенсивной записи логов. Поэтому при использовании такого механизма ведения записи крайне важно четко определить, что именно система должна фиксировать.

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

Уровни логирования

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

На уровне debug едет запись значимых переходных состояний, например, запуск или остановка сервера, запрос в БД, верификация, обработка информации. Уровень info расскажет программисту об общих событиях работы сервиса. Экстренные ситуации, проблемы, некорректные запросы будут записаны в warning. Основные ошибки на уровне error.

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

Ротация файлов

Представим, что логирование данных системы налажено. Например, мы прописали в приложении уровни: debug, info, warning, error. Выбрали в качестве механизма записи обычные текстовые файлы и у нас благополучно все логи собираются в отдельном месте. Теперь нам стоит разобраться с ротацией логов.

Ротация файлов логирования представляет собой архивирование логов с одновременным удалением старых файлов и заменой их вновь созданными. Во время ротации происходит сортировка логов и удаление тех файлов, к которым точно не нужно будет обращаться. Такой подход позволяет сократить объем памяти, используемой для хранения журналов логирования. Поскольку не все файлы одинаково значимы для системного администратора, в удалении части из них заложен смысл сохранения работоспособности и эффективности системы. Ведь чем больше памяти на жёстком диске, тем быстрее обрабатываются запросы пользователей.

Во время ротации происходит несколько технических процедур: сохранение и архивирование нового лога, переименование ранее сформированных файлов и удаление самых старых. Конечно, такое представление последовательности действий значительно упрощено. В реальности же ротация логов – это сложный многоступенчатый порядок действий системы, который запускается специальными утилитами.

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

Как читать логи?

Для чтения простых логов можно использовать обыкновенный текстовый редактор. А вот для расшифровки более сложных и объемных записей стоит воспользоваться специальным программным обеспечением. Ассортимент готовых решений для анализа файлов логирования достаточно широк. Выбирать ПО стоит, исходя из задач и объемов вашего ресурса. Расшифровка логов имеет свои особенности, поэтому во время анализа необходимо следовать рекомендациям разработчика ПО.

Заключение

Логирование данных — это фиксация событий в работе веб-ресурса, помогающая его администраторам вовремя выявлять баги системы, исправлять их, предотвращать появление ошибок или сбоев в будущем. Кроме указанных выше функций, информация из логов позволяет маркетологам получать данные про объем трафика, время посещения страниц, страницы входа/выхода, географию посетителей и другую важную для повышения конверсии информацию. Таким образом, логирование является важным этапом контроля и мониторинга работы системы, позволяющим увеличить коэффициент ее производительности.

Лог-файлы как неотъемлемая часть процесса разработки

Сергей Немчинский: Пути развития программиста: эксперт, руководитель, основатель

Сергей Немчинский: Сколько времени нужно учиться на программиста-джуна?

Сергей Немчинский: Стоит ли учить старые версии языков программирования, когда есть новые?

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

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

История и эволюция

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

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

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

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

�� Сделай свой первый шаг в IT — с нашим Start Course!

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

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

�� Black Friday: с 22 по 25 ноября! Начни свой кодинг-путь по выгодной цене.

Что такое логирование

Известно, что программисты проводят много времени, отлаживая свои программы, пытаясь разобраться, почему они не работают — или работают неправильно. Когда говорят про отладку, обычно подразумевают либо отладочную печать, либо использование специальных программ – дебагеров. С их помощью отслеживается выполнение кода по шагам, во время которого видно, как меняется содержимое переменных. Эти способы хорошо работают в небольших программах, но в реальных приложениях быстро становятся неэффективными.

Дебагер JavaScript в WebStorm

  • Сложность реальных приложений
  • Логирование
  • Уровни логирования
  • Ротация логов

Сложность реальных приложений

Возьмем для примера типичный сайт. Что он в себя включает?

  • DNS. Система трансляции имени сайта в ip-адрес сервера.
  • Веб-сервер. Программа, обслуживающая входящие запросы, перенаправляет их в код приложения и забирает от приложения данные для пользователей.
  • Физический сервер (или виртуальный) с его окружением. Включает в себя операционную систему, установленные и запущенные обслуживающие программы, например, мониторинг.
  • База данных. Внешнее хранилище, с которым связывается код приложения и обменивается информацией.
  • Само приложение. Помимо кода, который пишут программисты, приложение включает в себя сотни тысяч и миллионы строк кода сторонних библиотек. Кроме этого, код работает внутри фреймворка, у которого свои собственные правила обработки входящих запросов.
  • Фронтенд часть. Код, который выполняется в браузере пользователя. И системы сборки для разработки, например, Webpack.

И это только самый простой случай. Реальность же значительно сложнее: множество разноплановых серверов, системы кеширования (ускорения доступа), асинхронный код, очереди, внешние сервисы, облачные сервисы. Все это выглядит как многослойный пирог, внутри которого где-то работает написанный нами код. И этот код составляет лишь небольшую часть всего происходящего. Как в такой ситуации понять, на каком этапе был сбой, или все пошло не по плану? Для этого, как минимум, нужно определить, в каком слое произошла ошибка. Но даже это не самое сложное. Об ошибках в работающем приложении узнают не сразу, а уже потом, — когда ошибка случилась и, иногда, больше не воспроизводится.

Логирование

И для всего этого многообразия систем существует единое решение — логирование. В простейшем случае логирование сводится к файлу на диске, куда разные программы записывают (логируют) свои действия во время работы. Такой файл называют логом или журналом. Как правило, внутри лога одна строчка соответствует одному действию.

# Формат: ip-address / date / HTTP-method / uri / response code / body size 173.245.52.110 - [19/Jan/2021:01:54:20 +0000 ] "GET /my HTTP/1.1" 200 46018 108.162.219.13 - [19/Jan/2021:01:54:20 +0000 ] "GET /sockjs-node/244/gdt1vvwa/websocket HTTP/1.1" 0 0 162.158.62.12 - [19/Jan/2021:01:54:20 +0000 ] "GET /packs/css/application.css HTTP/1.1" 304 0 162.158.62.84 - [19/Jan/2021:01:54:20 +0000 ] "GET /packs/js/runtime-eb0a99abbe8cf813f110.js HTTP/1.1" 304 0 108.162.219.111 - [19/Jan/2021:01:54:20 +0000 ] "GET /packs/js/application-2cba5619945c4e5946f1.js HTTP/1.1" 304 0 108.162.219.21 - [19/Jan/2021:01:54:20 +0000 ] "GET /packs/js/0564a7b5d773bab52e53.js HTTP/1.1" 304 0 108.162.219.243 - [19/Jan/2021:01:54:20 +0000 ] "GET /packs/js/6fb7e908211839fac06e.js HTTP/1.1" 304 0 

Выше небольшой кусок лога веб-сервера Хекслета. Из него видно ip-адрес, с которого выполнялся запрос на страницу и какие ресурсы загружались, метод HTTP, ответ бекенда (кода) и размер тела ответа в HTTP. Очень важно наличие даты. Благодаря ей всегда можно найти лог за конкретный период, например на то время, когда возникла ошибка. Для этого логи грепают:

# Выведет 4 минуты логов за 31 марта 2020 года с 19:31 по 19:35 grep "31/Mar/2020:19:3[1-5]" access.log 

Когда программисты только начинают свой путь, они, часто не зная причину ошибки, опускают руки и говорят «я не знаю, что случилось, и что делать». Опытный же разработчик всегда первым делом говорит «а что в логах?». Анализировать логи — один из базовых навыков в разработке. В любой непонятной ситуации нужно смотреть логи. Логи пишут все программы без исключения, но делают это по-разному и в разные места. Чтобы точно узнать, куда и как, нужно идти в документацию конкретной программы и читать соответствующий раздел документации. Вот несколько примеров:

  • Ruby On Rails (Ruby)
  • Django (Python)
  • Laravel (PHP)
  • Spring Boot (Java)
  • Fastify (Node.js)

Многие программы логируют прямо в консоль, например Webpack показывает процесс и результаты сборки:

# Сюда же выводятся ошибки, если они были 「wds」: Project is running at http://hexletdev4.com/ 「wds」: webpack output is served from /packs/ 「wds」: Content not from webpack is served from /root/hexlet/public/packs 「wds」: 404s will fallback to /index.html 「wdm」: assets by chunk 10.8 MiB (auxiliary name: application ) 115 assets sets by path js/ 13.8 MiB assets by path js/*.js 13.8 MiB 52 assets assets by path js/pages/*.js 5.1 KiB asset js/pages/da223d3affe56711f31f.js 2.6 KiB [emitted ] [immutable ] (name: pages/my_learning ) 1 related asset asset js/pages/04adacfdd660803b19f1.js 2.5 KiB [emitted ] [immutable ] (name: pages/referral ) 1 related asset sets by chunk 9.14 KiB (auxiliary id hint: vendors ) 

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

Уровни логирования

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

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

// Пример логирования внутри программы // Логер: https://github.com/pinojs/pino import buildLogger from 'pino'; const logger = buildLogger(/* возможная конфигурация */); logger .info('тут что то полезное'); 

Во-вторых, во время запуска программы указывается уровень логирования, необходимый в конкретной ситуации. По умолчанию используется уровень info, который используется для описания каких-то ключевых и важных вещей. При таком уровне будут выводиться и warning, и error. Если поставить уровень error, то будут выводиться только ошибки. А если debug, то мы получим лог, максимально наполненный данными. Обычно debug приводит к многократному росту выводимой информации.

Уровни логирования, обычно, выставляются через переменную окружения во время запуска программы. Например, так:

# https://github.com/fastify/fastify-cli#options FASTIFY_LOG_LEVEL=debug fastify-server.js 

Существует и другой подход, основанный не на уровнях, а на пространствах имен. Этот подход получил широкое распространение в JS-среде, и является там основным. Фактически, он построен вокруг одной единственной библиотеки debug для логирования, которой пронизаны практически все JavaScript-библиотеки как на фронтенде, так и на бекенде.

Библиотека debug в JavaScript

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

import debug from 'debug'; // Пространство имен http const logHttp = debug('http'); const logSomethingElse = debug('another-namespace'); // Где-то в коде logHttp(/* информация о http запросе */); 

Запуск с нужным пространством:

DEBUG=http server.js 

Библиотека debug для логирования http в JavaScript

Ротация логов

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

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

Здесь тоже есть несколько путей. Можно воспользоваться готовыми решениями, такими как DataDog Logging, либо устанавливать и настраивать все самостоятельно через, например, ELK Stack

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *