Как добавить дату и время в записи логов?

Для добавления даты и времени в записи логов на Python можно использовать модуль logging и настроить форматтер.

Пример:

import logging

# Создаем логгер
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# Создаем обработчик (handler) для записи в файл или консоль
handler = logging.StreamHandler()  # Или FileHandler('logfile.log')

# Создаем форматтер с информацией о дате и времени
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')

# Устанавливаем форматтер для обработчика
handler.setFormatter(formatter)

# Добавляем обработчик к логгеру
logger.addHandler(handler)

# Пример использования
logger.info('Сообщение информационного уровня')
logger.warning('Предупреждение!')

В примере выше, %(asctime)s в формате сообщений будет заменен на текущую дату и время, отформатированные в соответствии с datefmt='%Y-%m-%d %H:%M:%S'. logging.StreamHandler выводит логи в консоль, а logging.FileHandler - в файл.


Чтобы добавить дату и время в записи логов в Python, можно использовать модуль logging и настроить форматтер (Formatter). Вот как это можно сделать:

Использование модуля logging с форматированием даты и времени

  1. Импортируйте модуль logging:

    import logging
  2. Настройте конфигурацию логгера: Самый простой способ – это базовая конфигурация, но в реальных проектах рекомендуется более детальная настройка.

    
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(levelname)s - %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S'
    )
          
    • level=logging.INFO: Устанавливает уровень логирования (например, INFO, DEBUG, WARNING, ERROR, CRITICAL). Будут логироваться только сообщения с этим уровнем или более высоким.
    • format='%(asctime)s - %(levelname)s - %(message)s': Определяет формат записи лога. %(asctime)s – время записи, %(levelname)s – уровень лога, %(message)s – само сообщение.
    • datefmt='%Y-%m-%d %H:%M:%S': Определяет формат даты и времени. %Y – год, %m – месяц, %d – день, %H – час, %M – минута, %S – секунда. Можно использовать различные комбинации этих директив. Полный список можно найти в документации Python для time.strftime().
  3. Используйте логгер для записи сообщений:

    
    logger = logging.getLogger(__name__)
    
    logger.info('Это информационное сообщение')
    logger.warning('Это предупреждение')
    logger.error('Это сообщение об ошибке')
          

Пример полной программы


import logging

# Настройка логгера
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(module)s - %(funcName)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)

# Получаем логгер
logger = logging.getLogger(__name__)

def my_function():
    logger.info('Функция начала работу')
    try:
        result = 10 / 0
    except ZeroDivisionError:
        logger.exception('Произошла ошибка деления на ноль')
    logger.info('Функция завершила работу')


if __name__ == '__main__':
    logger.info('Программа начала работу')
    my_function()
    logger.info('Программа завершила работу')
  

Вывод в консоль будет примерно таким:


2023-10-27 14:30:00 - INFO - __main__ - <module> - Программа начала работу
2023-10-27 14:30:00 - INFO - __main__ - my_function - Функция начала работу
2023-10-27 14:30:00 - ERROR - __main__ - my_function - Произошла ошибка деления на ноль
Traceback (most recent call last):
  File "<stdin>", line 11, in my_function
ZeroDivisionError: division by zero
2023-10-27 14:30:00 - INFO - __main__ - my_function - Функция завершила работу
2023-10-27 14:30:00 - INFO - __main__ - <module> - Программа завершила работу
  

Дополнительные настройки

  • Логирование в файл: Можно настроить логгер для записи сообщений в файл, а не в консоль. Для этого нужно добавить FileHandler к логгеру.
  • Разные уровни логирования: Используйте разные уровни логирования (DEBUG, INFO, WARNING, ERROR, CRITICAL) для разных типов сообщений. Это поможет вам фильтровать сообщения при отладке или анализе.
  • Пользовательские форматтеры: Можно создать свой собственный форматтер, если стандартные не подходят.
  • Логирование исключений: Используйте logger.exception() для логирования информации об исключениях, включая трассировку стека.

В заключение, использование модуля logging с правильной настройкой формата даты и времени – важная часть разработки robust и отлаживаемых приложений на Python.

0