Что такое логирование
Известно, что программисты проводят много времени, отлаживая свои программы, пытаясь разобраться, почему они не работают — или работают неправильно. Когда говорят про отладку, обычно подразумевают либо отладочную печать, либо использование специальных программ – дебагеров. С их помощью отслеживается выполнение кода по шагам, во время которого видно, как меняется содержимое переменных. Эти способы хорошо работают в небольших программах, но в реальных приложениях быстро становятся неэффективными.
- Сложность реальных приложений
- Логирование
- Уровни логирования
- Ротация логов
Сложность реальных приложений
Возьмем для примера типичный сайт. Что он в себя включает?
- 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-библиотеки как на фронтенде, так и на бекенде.
Принцип работы здесь такой. Под нужную ситуацию создается специализированная функция логирования с указанием пространства имен, которая затем используется для всех событий одного процесса. В итоге библиотека позволяет легко отфильтровать только нужные записи, соответствующие нужному пространству.
import debug from 'debug'; // Пространство имен http const logHttp = debug('http'); const logSomethingElse = debug('another-namespace'); // Где-то в коде logHttp(/* информация о http запросе */);
Запуск с нужным пространством:
DEBUG=http server.js
Ротация логов
Со временем количество логов становится большим, и с ними нужно что-то делать. Для этого используется ротация логов. Иногда за это отвечает сама программа, но чаще — внешнее приложение, задачей которого является чистка. Эта программа по необходимости разбивает логи на более мелкие файлы, сжимает, перемещает и, если нужно, удаляет. Подобная система встроена в любую операционную систему для работы с логами самой системы и внешних программ, которые могут встраиваться в нее.
С веб-сайтами все еще сложнее. Даже на небольших проектах используется несколько серверов, на каждом из которых свои логи. А в крупных проектах тысячи серверов. Для управления такими системами созданы специализированные программы, которые следят за логами на всех машинах, скачивают их, складывают в заточенные под логи базы данных и предоставляют удобный способ поиска по ним.
Здесь тоже есть несколько путей. Можно воспользоваться готовыми решениями, такими как DataDog Logging, либо устанавливать и настраивать все самостоятельно через, например, ELK Stack
Логирование: понятие, механизмы и уровни
Программисты и системные администраторы занимаются структурированием и контролем за работой сайтов, серверов и программного обеспечения отдельного компьютера. При возникновении ошибок в работе того или иного сервиса специалист обращается к логам.
Что такое логи?
Лог (log) — это хронологическая запись наиболее значимой информации о работе системы. Подобная фиксация событий дает представление и том, что происходило в системе, в какой именно момент, какой пользователь спровоцировал то или иное событие, какие ошибки возникли и т.д.
Запись оформляется в особый файл, который еще называют лог-файлом или журналом логов. Для специалиста такой файл — это книга или справочник, рассказывающий о том, что происходило в системе в конкретный период времени. Грамотные администраторы, обращаясь к подобным записям, могут не только выявить проблему в работе системы на ранней стадии, но и вовремя предотвратить сбой в ее работе. Несанкционированные действия или установление вредоносных программ также фиксируются журналами логов. И по ним можно достаточно эффективно выявить внешнее вмешательство в работу сайта. Таким образом логи используются для контроля, мониторинга, анализа, защиты и оптимизации работы приложений и серверов.
Типы логов
В зависимости от того, информация какого типа фиксируется системой, формируются разные типы записей. Поэтому логи делятся на: системные, серверные, почтовые, логи аутентификации, авторизации, log file приложений, баз данных и т.д. Подобная группировка помогает быстрее находить нужный лог и оптимизировать работу с ним.
Еще существует разделение логов в порядке их значимости для ситуационной ошибки:
- Срочное исправление — Fatal error
- Ошибки, не влияющие на пользователя — Not critical error
- События, требующие внимания — Warning
- Информация о вызовах сервера — Initial information
Что такое логирование?
Логирование — это процесс формирования логов, а именно: фиксация и структурирование информации о работе системы в отдельные лог-файлы с возможностью быстрого доступа к ним в случае необходимости. Файлы содержат отчет обо всем, что происходило с системой: какие действия совершали конкретные пользователи, когда это происходило, как система реагировала на события и т.д.
Фиксацию всех важных для системы событий производит специальное программное обеспечение. В процессе логирования учитываются настройки уровня детализации записей, поскольку ни одна система не проводит записи абсолютно всех событий.
Кроме формирования журнала записей, важной компонентой настройки логирования является правильная организация хранения логов. Она должна обеспечивать своевременный и быстрый доступ к ним.
Лог-файлы могут храниться на компьютере, на удалённом жёстком диске, на отдельном сервере, в облачных хранилищах, т.е. на любом удобном носителе с ограниченным доступом для посторонних.
Настройка автоматического сбора и хранения логов делается для того, чтобы во время возникновения проблем на сервере была возможность проанализировать сохраненные данные. При этом важно не просто выявить сбой, но и исправить возникшие проблемы, предотвратить появление ошибок в будущем. В этом заключается основная задача работы программиста с log file.
Механизмы записи информации
Как было сказано выше, в журналах логов не фиксируется абсолютно вся информация. Система производит запись наиболее важных для анализа данных. Например, при обращении пользователя к конкретной странице сайта, в лог записываются: URL, к которому обращается посетитель, его IP-адрес, используемый браузер, операционная система, дата и точное время обращения, код ответа сервера и прочее.
Для формирования журналов логирования программисты используют разные механизмы фиксации информации:
- Самый понятный и распространенный механизм — запись логов в текстовый файл. Это запись каждого события отдельной строкой.Подобные журналы легко читать, открыв файл в любом текстовом редакторе.
- Более углубленный лог — когда одно событие записывается несколькими строками, например, журнал ошибок. Такие записи имеют сложную многоступенчатую структуру, в которой человеку легко пропустить важную информацию. Поэтому для чтения этого вида log files используются специальные программы.
- Бинарный — самый сложный механизм записи файлов. Обычно такие логи обрабатываются тем же программным обеспечением, что и ПО, их записывающее.
- Приложения, использующие БД или сами СУБД. Основным недостатком такой фиксации является вероятность замедления работы базы данных из-за интенсивной записи логов. Поэтому при использовании такого механизма ведения записи крайне важно четко определить, что именно система должна фиксировать.
Настраивая логирование, важно учитывать, что процесс формирования лог-файлов должно быть незаметным для пользователя. Если отладка проведена не правильно, производительность системы будет снижаться из-за нехватки места на диске.
Уровни логирования
При любом механизме записи событий их объем все равно будет большим. И работать с таким количеством информации будет достаточно сложно. Поэтому логи структурируют по уровням. Наиболее известными и востребованными являются следующие уровни логирования:
На уровне debug едет запись значимых переходных состояний, например, запуск или остановка сервера, запрос в БД, верификация, обработка информации. Уровень info расскажет программисту об общих событиях работы сервиса. Экстренные ситуации, проблемы, некорректные запросы будут записаны в warning. Основные ошибки на уровне error.
Чтобы соблюдались уровни логирования, программисту нужно прописать условия или внутри самой программы, или выставить условия в зависимости от ситуации при запуске программы, которая производит логирование.
Ротация файлов
Представим, что логирование данных системы налажено. Например, мы прописали в приложении уровни: debug, info, warning, error. Выбрали в качестве механизма записи обычные текстовые файлы и у нас благополучно все логи собираются в отдельном месте. Теперь нам стоит разобраться с ротацией логов.
Ротация файлов логирования представляет собой архивирование логов с одновременным удалением старых файлов и заменой их вновь созданными. Во время ротации происходит сортировка логов и удаление тех файлов, к которым точно не нужно будет обращаться. Такой подход позволяет сократить объем памяти, используемой для хранения журналов логирования. Поскольку не все файлы одинаково значимы для системного администратора, в удалении части из них заложен смысл сохранения работоспособности и эффективности системы. Ведь чем больше памяти на жёстком диске, тем быстрее обрабатываются запросы пользователей.
Во время ротации происходит несколько технических процедур: сохранение и архивирование нового лога, переименование ранее сформированных файлов и удаление самых старых. Конечно, такое представление последовательности действий значительно упрощено. В реальности же ротация логов – это сложный многоступенчатый порядок действий системы, который запускается специальными утилитами.
На рынке существует системы логирования с высокими рейтингами, которые не только реализуют функцию формирования журналов с хронологической записью истории событий, но и с настройкой их последующей ротации.
Как читать логи?
Для чтения простых логов можно использовать обыкновенный текстовый редактор. А вот для расшифровки более сложных и объемных записей стоит воспользоваться специальным программным обеспечением. Ассортимент готовых решений для анализа файлов логирования достаточно широк. Выбирать ПО стоит, исходя из задач и объемов вашего ресурса. Расшифровка логов имеет свои особенности, поэтому во время анализа необходимо следовать рекомендациям разработчика ПО.
Заключение
Логирование данных — это фиксация событий в работе веб-ресурса, помогающая его администраторам вовремя выявлять баги системы, исправлять их, предотвращать появление ошибок или сбоев в будущем. Кроме указанных выше функций, информация из логов позволяет маркетологам получать данные про объем трафика, время посещения страниц, страницы входа/выхода, географию посетителей и другую важную для повышения конверсии информацию. Таким образом, логирование является важным этапом контроля и мониторинга работы системы, позволяющим увеличить коэффициент ее производительности.
Логи сервера — так ли они важны?
Специалистам больше не приходится записывать файлы и анализировать их вручную, ведь у них есть логи сервера.
Давайте начнём с того, что такое логи, как их посмотреть и почему так важно их использовать.
Что такое логи
Ваши системы и приложения, включая серверы, автоматически генерируют журналы при возникновении событий. Например, программное обеспечение для резервного копирования создает журналы, которые дают вам представление о всём происходящем процессе.
Серверы постоянно создают определённые файлы, которые представляют собой необработанные данные о соответствующей активности сервера – например, благодаря им можно проверить веб-сервер и узнать о трафике сайта. Файлы журналов сервера также могут предоставить системным администраторам детали и понимание, необходимые для эффективного устранения неполадок.
Логи сервера или журнал сервера – это текстовые файлы, которые автоматически создаются и хранятся на жёстком диске веб-сервера в хронологическом порядке. В них содержится информация о пользователях и их активности на платформе, а также о работе сервера.
Каждый раз, когда любой браузер или пользовательский агент, включая Google, запрашивает какой-либо ресурс с вашего сервера – страницы, изображения, файл javascript, что угодно, – эта информация записывается в log file – логи сервера.
В них включается информация о запросе, включая IP-адрес клиента, дату и время запроса, запрошенную страницу, код HTTP и так далее. Эти данные можно объединить в один файл или разделить на отдельные логи, такие как access_log или error_log.
Как правило, эти файлы недоступны для обычных пользователей интернета, только для разработчика или других администраторов.
Существует множество различных типов логов, но основные это:
Системные логи представляют собой журнал событий, происходящих в операционной системе: уведомления о запуске, обновление системы, неожиданные завершения работы, сбои и предупреждения и прочее.
Логи авторизации и доступа содержат список пользователей или ботов, которые обращались к определённым программам или файлам.
Серверные логи отслеживают действия на сервере в течение некоторого периода времени.
Логи безопасности отслеживают события, непосредственно связанные с безопасностью вашего устройства.
Зачем нужны логи
Логи сервера важны, поскольку в них хранится ценная информация, благодаря которой можно:
- найти бреши в системе безопасности;
- оперативно выявить ошибки, сбои и вредоносное ПО;
- проанализировать трафик веб-сайта.
Что хранится в логах
В журнале веб-сервера чаще всего встречаются следующие значения:
- трафик и количество уникальных пользователей;
- продолжительность посещения и последние посещения;
- наиболее загруженные активностью дни недели и часы;
- домены посетителей хоста;
- список хостов;
- авторизованные пользователи и их последние посещения;
- количество просмотров веб-страниц;
- самые просматриваемые страницы;
- типы файлов;
- ОС пользователя;
- браузер пользователя;
- поисковые системы, ключевые слова, используемые для поиска анализируемого веб-сайта.
Как читать логи
Так как существуют разные типы логов, они могут читаться абсолютно по-разному. Мы рассмотрим как интерпретировать логи доступа (access_log) на следующем примере:
11.222.333.44 — — [1/Dec/2021:11:01:28 –0600] «GET /blog/page-address.htm HTTP/1.1» 200 182 «-» «Mozilla/5.0 Chrome/60.0.3112.113»
11.222.333.44 – IP-адрес, с которого был сделан запрос;
[1/Dec/2021:11:01:28 –0600] – дата и время запроса, а также часовой пояс;
GET – тип запроса,
/blog/page-address.htm – объект запроса;
HTTP/1.1 – протокол, по которому прошёл запрос;
200 – код ответа сервера;
182 – количество байт полученных посетителем;
Mozilla/5.0 Chrome/60.0.3112.113 – данные о посетителе.
Как проверить логи сервера
Просто открыть файл логов сервера, как правило, несложно. Хотя в некоторых случаях доступ к журналам сервера может быть ограничен в целях безопасности, и его придётся запросить у веб-разработчиков.
Однако давайте предположим, что у вас всё-таки есть доступ к ним. В таком случае встаёт вопрос: где хранятся логи сервера, и как их открыть?
Чтобы посмотреть содержимое логов, нужно открыть папку логов и скачать нужный файл на свой ПК. Это можно сделать с помощью различных сервисов: Plesk, ispmanager и cPanel.
- В первую очередь откройте панель управления хостингом.
- В меню слева выберите вкладку Файлы.
- Найдите папку logs и откройте её.
- Скачайте нужные вам файлы, выделив их и нажав Скачать.
- Откройте панель управления хостингом.
- Раскройте меню Файлы и выберите опцию Менеджер файлов.
- Найдите папку с названием «logs».
- Скачайте нужные вам файлы. Для этого выделите их и нажмите Скачать.
- Откройте панель управления хостингом.
- В левой панели выберите Менеджер файлов.
- Перейдите в logs.
- Скачайте необходимые файлы.
Все эти файлы можно открыть вручную с помощью программ, которые уже есть в вашей системе:
- Многие файлы логов записываются в виде обычного текста, что означает, что вы можете использовать любой текстовый редактор (Блокнот, Microsoft Office или TextEdit) для открытия и просмотра файла логов сервера.
- Кроме того, можно воспользоваться браузером и открыть файл логов сервера в формате HTML .
- Другой вариант открытия логов в операционной системе Windows – через Event Viewer, служебную программу с большей функциональностью, чем указанные выше варианты.
Заключение
Использование логов сервера даёт множество преимуществ. Они помогают обнаруживать вредоносное ПО, различные ошибки, повысить уровень безопасности сервера и даже проанализировать весь трафик сервера.
Если вам нужно доказать кому-то их необходимость, попробуйте рассказать о том, что узнали в этой статье: о ценности логов, какую информацию они содержат и в каких случаях к ним обращаются. Мы уверены, что уже этого будет достаточно, чтобы донести до человека важность этих файлов.
Логгеры в программировании: что это и зачем
Когда у вас сложный код, много всего может пойти не так. Чтобы понимать, что именно в коде сломано, используют логгеры. Вот что это, как работает и как применить в вашем проекте.
Что такое логгер
Логгер — это специальный модуль, библиотека или отдельная программа, которая реагирует на события в программе и записывает всё, что там происходит. Эти записи называются логами, и чаще всего это обычный текстовый файлик. Когда что-то в программе идёт не так, разработчик смотрит лог и ищет, в какой момент и где возникла проблема.
Иногда лог нужен для ведения хронологии — что в какой момент сработало и с какими параметрами. Например, во сколько кто подключился к системе и какие файлы качал. Это может помочь в расследованиях всяческих инцидентов.
Где может храниться лог
Текстовый файл — самая простая система хранения логов. Ещё логи могут храниться в базе данных, например когда в программе работает одновременно много сервисов и нужно собрать всю информацию об их работе.
Логи могут записываться на другой компьютер. Так иногда делают системные администраторы, чтобы собирать информацию о работе нескольких серверов.
Также логи могут отправляться в другую программу, например в систему мониторинга и аналитики.
Как работает логгер
Логгер ничего не делает сам по себе, и, чтобы в лог попала какая-то запись, программист должен добавить в программу команду типа такой:
«Запиши в лог: в часов минут к серверу подключился новый пользователь с адресом »
Для этого нужно сначала подключить логгер, который подходит вашему языку программирования. Например, импортировать библиотеку в Python или добавить скрипт в JavaScript:
После этого мы получаем доступ к логгеру и можем что-нибудь отправить в лог:
debug(‘Такой-то модуль загрузился’)
На самом деле мы уже много раз использовали логгер в своих проектах. Например, мы выводили промежуточные результаты в разных алгоритмах сортировки на JavaScript, чтобы посмотреть, как код работает изнутри. Для этого мы писали команду console.log() — она выводит наше сообщение в консоль.
Уровни логирования
Обычно в лог пишут все события — и штатные срабатывания, и ошибки. Но в проблемной ситуации нас будут интересовать только ошибки, а для проверки стабильности — сообщения о том, что всё идёт по плану. Чтобы их можно было просто разделить между собой, используют разные уровни логирования.
- Debug — когда мы пишем в лог сообщения, что стартовала какая-то функция или мы получили ответ от сервера.
- Info — информация о разовых ситуациях, например: считали базу данных при запуске, установили соединение с сервером, начали работу.
- Warning — ещё не ошибка, но происходит что-то странное: сервер не ответил, пользователь ввёл не тот пароль, вместо данных пришли нули.
- Error — ошибки в работе программы. Обычно их отлавливают с помощью исключений.
Уровней логирования может быть и больше, в зависимости от возможностей логгера. По этим уровням можно в логах отфильтровать, какой уровень мы хотим посмотреть. Чтобы записать событие в лог на каком-то уровне, например info, обычно его используют как метод при вызове логгера:
logger.info(‘Запустился модуль проверки лицензии, ждём ответ’)
При желании можно даже вести лог каждого уровня в своём отдельном файле, но такое бывает нечасто. Проще держать всё в одном файле и фильтровать.
А можно сделать свой логгер и им пользоваться в проектах?
Можно: придумываете формат логирования, пишете под это библиотеку, используете. Правда, так почти не делают, потому что всё уже придумано до нас.
Если ваш логгер решает какую-то совсем простую задачу, то можно обойтись и console.log() или записью той же строчки в файл. А для более сложных проектов проще использовать уже готовый логгер: скорее всего, у него будет больше возможностей.
Лучше не тратить время на разработку того, что уже есть, а сосредоточиться на задачах, которые ещё никто не решил.
Что дальше
Теперь, когда мы знаем о логгерах достаточно, попробуем применить их в разных проектах — сначала на JavaScript, а потом на Python.
Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.