Логирование — это процесс записи событий, которые происходят в программе или системе, в специальные файлы (логи). Проще говоря, программа по ходу работы оставляет заметки: что она сделала, когда и с каким результатом. Ниже разберем, что такое логи, зачем они нужны, какие бывают уровни логирования и как все это выглядит в коде на примере Python.
Содержание
Логи — это что
Логи (англ. logs) — это хронологические записи о работе системы или приложения. Каждая строка лога обычно фиксирует одно событие: время, тип события и краткое описание того, что произошло.
Записи складываются в отдельный файл, который называют лог-файлом или журналом. Для разработчика и системного администратора такой журнал — это черный ящик программы: по нему видно, что и в какой момент происходило, какие ошибки возникали и как система на них реагировала.
Логи используют для четырех основных задач:
- поиск причины сбоя (что случилось перед падением);
- мониторинг работы сервиса в реальном времени;
- аудит безопасности (кто и когда входил, были ли подозрительные действия);
- анализ нагрузки и поведения пользователей.
Один пример: когда пользователь открывает сайт, веб-сервер обычно пишет в лог адрес запрошенной страницы, IP-адрес клиента, дату и время, а также код ответа (например, 200 — успех, 404 — страница не найдена, 500 — ошибка сервера).
Типы логов
Логи разделяют по источнику — по тому, какая часть системы их создает. Это помогает быстрее найти нужный журнал при разборе проблемы.
| Тип лога | Что фиксирует | Пример события |
|---|---|---|
| Системные | Работу операционной системы | Запуск и остановка службы |
| Серверные | События веб- или другого сервера | HTTP-запрос к странице |
| Логи приложений | Внутреннюю логику программы | Оплата заказа прошла успешно |
| Базы данных | Обращения к СУБД | Медленный SQL-запрос |
| Аутентификации | Входы и права доступа | Неудачная попытка входа |
| Почтовые | Работу почтовых сервисов | Письмо доставлено или отклонено |
Это деление условное и зависит от инфраструктуры. В небольшом проекте все может писаться в один файл, а в крупной системе логи каждого сервиса собирают отдельно и отправляют в централизованное хранилище.
Уровни логирования
Если писать в лог вообще все, файл быстро распухнет и в нем будет невозможно найти важное. Поэтому у каждого сообщения есть уровень — метка важности. Она позволяет отфильтровать шум и оставить только то, что нужно в конкретной ситуации.
В большинстве языков и библиотек используют пять базовых уровней. Ниже — стандартная шкала на примере модуля logging из Python (в скобках — числовое значение уровня).
| Уровень | Значение | Когда применять |
|---|---|---|
| DEBUG (10) | Подробности для отладки: значения переменных, шаги алгоритма | Разработка и поиск бага |
| INFO (20) | Обычные события: сервис запущен, задача выполнена | Мониторинг штатной работы |
| WARNING (30) | Что-то пошло не так, но программа продолжает работать | Некорректный ввод, близкий к концу диск |
| ERROR (40) | Операция не выполнилась, часть функций сломана | Не удалось сохранить файл |
| CRITICAL (50) | Тяжелый сбой, работа под угрозой полной остановки | Нет связи с базой данных |
Уровни выстроены по возрастанию важности. Если задать программе минимальный уровень, скажем WARNING, то сообщения DEBUG и INFO записываться не будут, а WARNING, ERROR и CRITICAL — будут. Это ключевой прием: в разработке ставят низкий порог (DEBUG), чтобы видеть все детали, а в рабочем окружении (production) поднимают порог, чтобы не захламлять диск и не мешать производительности.
Названия уровней могут отличаться. Например, во многих системах встречаются TRACE (еще подробнее, чем DEBUG), WARN вместо WARNING и FATAL вместо CRITICAL. Смысл шкалы при этом одинаковый — от самого подробного к самому серьезному.
Как логирование выглядит в коде
Посмотрим на модуль logging — это встроенный инструмент логирования в Python, ставить ничего не нужно. Простейший пример:
import logging
logging.basicConfig(level=logging.INFO)
logging.info("Сервис запущен")
logging.warning("Мало свободной памяти")
logging.error("Не удалось подключиться к базе")
Вывод в консоль:
INFO:root:Сервис запущен
WARNING:root:Мало свободной памяти
ERROR:root:Не удалось подключиться к базе
Каждая строка показывает уровень, источник (root — логгер по умолчанию) и текст сообщения.
Частая ошибка новичка
Типичная ситуация: человек пишет отладочное сообщение и не видит его в консоли.
import logging
logging.debug("значение x = 5")
# ожидали увидеть строку в консоли
Фактический результат — пусто, в консоль ничего не выводится:
Причина в том, что по умолчанию модуль logging показывает сообщения только с уровня WARNING и выше, а DEBUG (10) ниже этого порога. Исправление — явно задать нужный уровень до вызова:
import logging
logging.basicConfig(level=logging.DEBUG)
logging.debug("значение x = 5")
# DEBUG:root:значение x = 5
Формат и запись в файл
На практике логи почти всегда снабжают датой и временем и пишут в файл, а не в консоль. Это делается той же функцией basicConfig:
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s %(levelname)s %(message)s",
filename="app.log",
)
logging.info("Пользователь вошел в систему")
После запуска в файле app.log появится строка вида:
2026-09-09 12:30:05,123 INFO Пользователь вошел в систему
Механизмы формирования и хранения логов
Логи можно записывать по-разному, и выбор зависит от того, кто и как будет их читать.
- Текстовый файл. Самый распространенный вариант: строки обычного текста, легко открыть и прочитать глазами. Подходит почти для любых задач.
- Структурированный формат (например, JSON). Каждая запись — объект с полями. Такие логи неудобно читать вручную, зато их легко фильтровать и анализировать автоматически. Это стандарт для крупных систем.
- Бинарные записи. Компактны и быстры, но читаются только специальной программой. Пример — системный журнал
journaldв Linux. - Запись в базу данных. Удобна для поиска и отчетов, но при большом потоке событий может замедлять саму базу, поэтому объем такой записи ограничивают.
Отдельная задача — хранение. Логи держат там, откуда их можно быстро получить: на сервере, в облачном хранилище или в централизованной системе сбора логов. Доступ к журналам ограничивают, потому что в них попадают чувствительные данные (IP-адреса, действия пользователей).
Важно и не переусердствовать: если писать слишком много и слишком подробно, логи съедят место на диске и замедлят работу. Поэтому уровень детализации подбирают под задачу.
Выводы
- Логи — это хронологические записи о событиях в программе или системе; логирование — процесс их создания.
- Главная польза логов — находить причины сбоев, следить за работой сервиса и фиксировать действия для аудита безопасности.
- Уровни логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL) — это метки важности; они позволяют отфильтровать лишнее и оставить нужное.
- Порог уровня настраивают под окружение: подробный
DEBUGпри разработке и более высокий порог в production. - Частая ошибка новичка — не видеть сообщения
DEBUGилиINFO, потому что по умолчанию порог стоит наWARNING. - Формат хранения (текст, JSON, бинарный, база данных) выбирают по тому, будут ли логи читать люди или разбирать программы.
Где применяется / связь с практикой
Освойте тему на практике
Логирование — базовый навык любого разработчика: без внятных логов почти невозможно понять, почему программа упала в бою, где ее не получится запустить в отладчике. Начинают обычно с простого — встроенного модуля logging в Python, а дальше подключают уровни, форматирование и запись в файл. Разобраться с основами языка и на практике настроить логирование помогает курс Python Basic.
Освойте тему на практике
Если пока хочется просто посмотреть, как устроено обучение и подойдет ли направление, стоит заглянуть на бесплатные вебинары — там можно послушать преподавателей и задать вопросы вживую.
Смежные темы: Логирование в Python, Ошибки в PHP: виды и логирование, Логирование в ASP.NET Core.
FAQ
Чем логирование отличается от отладки в отладчике (дебаггере)?
Отладчик останавливает программу и дает пошагово изучить ее прямо во время работы, но обычно только на своей машине. Логи же копятся сами и остаются после запуска, поэтому по ним можно разобрать сбой, который случился на сервере, когда вас там не было.
Как долго нужно хранить логи?
Единого правила нет: подробные отладочные логи часто чистят через несколько дней, а логи безопасности и доступа хранят месяцами из-за требований аудита. Срок задают политикой хранения и ротацией — автоматическим удалением или архивированием старых файлов.
Можно ли писать в логи пароли и персональные данные?
Нет. Пароли, номера карт и другие чувствительные данные в логи попадать не должны: файл могут прочитать администраторы или он утечет при взломе. Такие поля маскируют или вырезают до записи.



