Для добавления даты и времени в записи логов на 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
с форматированием даты и времениИмпортируйте модуль logging
:
import logging
Настройте конфигурацию логгера: Самый простой способ – это базовая конфигурация, но в реальных проектах рекомендуется более детальная настройка.
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()
.Используйте логгер для записи сообщений:
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
к логгеру.logger.exception()
для логирования информации об исключениях, включая трассировку стека.В заключение, использование модуля logging
с правильной настройкой формата даты и времени – важная часть разработки robust и отлаживаемых приложений на Python.