Настройка формата времени в Python logging: без миллисекунд
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Чтобы настроить отображение времени в логировании Python, воспользуйтесь свойством datefmt
в классе Formatter. Можно создать логгер, который будет отображать сообщения с определённым форматом времени, следующим образом:
import logging
# Задаем вам подходящий формат времени
time_format = '%Y-%m-%d %H:%M:%S'
# Определяем настройки логгера
logger = logging.getLogger('my_logger')
logger.setLevel(logging.INFO)
handler = logging.StreamHandler()
# Описываем формат вывода сообщений
formatter = logging.Formatter('%(asctime)s – %(message)s', datefmt=time_format)
handler.setFormatter(formatter)
logger.addHandler(handler)
# Выводим сообщение в заданном формате времени
logger.info('Лог с настраиваемым форматом времени')
Измените time_format
в соответствии с вашими предпочтениями, чтобы разнообразить отображение времени в логах. Такие настройки обеспечивают точное отображение даты и времени для каждого сообщения.
Простая настройка логирования
Функция logging.basicConfig
с параметром datefmt
позволяет задать формат времени для всех логов:
import logging
# Задаем определенный формат времени
custom_time_format = '%Y-%m-%d %H:%M:%S'
# Производим общую настройку логирования
logging.basicConfig(level=logging.INFO,
format='%(asctime)s – %(message)s',
datefmt=custom_time_format)
# Демонстрируем эффект от использования этих настроек
logging.info('Также со своим форматом времени')
Этот подход оптимален, если требуется простая и унифицированная настройка логирования.
Использование конфигурационного файла
Если ваш проект масштабен с большим количеством логгеров и обработчиков, рекомендуется использовать конфигурационные файлы для указания форматов времени. Это помогает сделать код аккуратнее и более удобным для управления:
[formatter_myFormatter]
format=%(asctime)s – %(levelname)s – %(message)s
datefmt=%Y-%m-%d %H:%M:%S
Такой подход позволяет легко выбирать форматтеры в настройках логгеров.
Визуализация
Логирование в Python можно представить как расписание движения поездов: каждая запись – это отдельный поезд:
🚂 Регистрация лога – текущее время по умолчанию
Настройка формата времени емкий процесс установки "часов" для просмотра этого расписания:
logging.basicConfig(format='%(asctime)s – %(message)s', datefmt='%I:%M%p')
В результате расписание будет отображать время в 12-часовом формате AM/PM:
🚂 Регистрация лога – пользовательское время: [🕒 03:45PM]
Настраиваемый формат времени
Вы можете настроить отображение времени, используя директивы strftime, такие как %Y
для года, %m
для месяца, %d
для дня, %H
для 24-часового и %I
для 12-часового формата времени.
Удаление миллисекунд
Чтобы исключить миллисекунды (%f
), просто не указывайте их в строке форматирования datefmt
.
logging.Formatter('%(asctime)s – %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
Динамическое форматирование времени
Вы можете создать разные форматтеры для разных обработчиков или логгеров, чтобы отображать различные временные метки в одном и том же приложении.
# Форматтер для вывода в консоль – без миллисекунд
console_formatter = logging.Formatter('%(asctime)s – %(message)s', '%H:%M:%S')
# Форматтер для вывода в файл – с миллисекундами
file_formatter = logging.Formatter('%(asctime)s – %(message)s', '%H:%M:%S.%f')
Уровень детализации логов зависит только от ваших требований.
Полезные материалы
- logging — Возможности логирования в Python — Документация Python 3.12.2 – Руководство по встроенной системе логирования Python.
- Logging Cookbook — Документация Python 3.12.2 – Сборник советов и рецептов по настройке логирования.
- Python logging: использование миллисекунд в формате времени – Stack Overflow – Обсуждение способов форматирования времени с миллисекундами на Stack Overflow.
- Python strftime reference cheatsheet – Шпаргалка по использованию функции strftime в Python.
- Логирование в Python – Real Python – Подробное освещение возможностей логирования в Python.
- GitHub – Delgan/loguru: Логирование Python сделано (абсурдно) простым – Альтернатива стандартной библиотеки logging, упрощающая процесс логирования.