Настройка формата времени в Python logging: без миллисекунд

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Чтобы настроить отображение времени в логировании Python, воспользуйтесь свойством datefmt в классе Formatter. Можно создать логгер, который будет отображать сообщения с определённым форматом времени, следующим образом:

Python
Скопировать код
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 в соответствии с вашими предпочтениями, чтобы разнообразить отображение времени в логах. Такие настройки обеспечивают точное отображение даты и времени для каждого сообщения.

Кинга Идем в IT: пошаговый план для смены профессии

Простая настройка логирования

Функция logging.basicConfig с параметром datefmt позволяет задать формат времени для всех логов:

Python
Скопировать код
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('Также со своим форматом времени')

Этот подход оптимален, если требуется простая и унифицированная настройка логирования.

Использование конфигурационного файла

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

ini
Скопировать код
[formatter_myFormatter]
format=%(asctime)s – %(levelname)s – %(message)s
datefmt=%Y-%m-%d %H:%M:%S

Такой подход позволяет легко выбирать форматтеры в настройках логгеров.

Визуализация

Логирование в Python можно представить как расписание движения поездов: каждая запись – это отдельный поезд:

Markdown
Скопировать код
🚂 Регистрация лога – текущее время по умолчанию

Настройка формата времени емкий процесс установки "часов" для просмотра этого расписания:

Python
Скопировать код
logging.basicConfig(format='%(asctime)s – %(message)s', datefmt='%I:%M%p')

В результате расписание будет отображать время в 12-часовом формате AM/PM:

Markdown
Скопировать код
🚂 Регистрация лога – пользовательское время: [🕒 03:45PM]

Настраиваемый формат времени

Вы можете настроить отображение времени, используя директивы strftime, такие как %Y для года, %m для месяца, %d для дня, %H для 24-часового и %I для 12-часового формата времени.

Удаление миллисекунд

Чтобы исключить миллисекунды (%f), просто не указывайте их в строке форматирования datefmt.

Python
Скопировать код
logging.Formatter('%(asctime)s – %(message)s', datefmt='%Y-%m-%d %H:%M:%S')

Динамическое форматирование времени

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

Python
Скопировать код
# Форматтер для вывода в консоль – без миллисекунд
console_formatter = logging.Formatter('%(asctime)s – %(message)s', '%H:%M:%S')

# Форматтер для вывода в файл – с миллисекундами
file_formatter = logging.Formatter('%(asctime)s – %(message)s', '%H:%M:%S.%f')

Уровень детализации логов зависит только от ваших требований.

Полезные материалы

  1. logging — Возможности логирования в Python — Документация Python 3.12.2 – Руководство по встроенной системе логирования Python.
  2. Logging Cookbook — Документация Python 3.12.2 – Сборник советов и рецептов по настройке логирования.
  3. Python logging: использование миллисекунд в формате времени – Stack Overflow – Обсуждение способов форматирования времени с миллисекундами на Stack Overflow.
  4. Python strftime reference cheatsheet – Шпаргалка по использованию функции strftime в Python.
  5. Логирование в Python – Real Python – Подробное освещение возможностей логирования в Python.
  6. GitHub – Delgan/loguru: Логирование Python сделано (абсурдно) простым – Альтернатива стандартной библиотеки logging, упрощающая процесс логирования.