logging.error()
, необходимо сначала настроить модуль logging
. Простейший пример:
import logging
logging.basicConfig(level=logging.ERROR)
try:
# Код, который может вызвать ошибку
result = 1 / 0
except Exception as e:
logging.error("Произошла ошибка деления на ноль: %s", e)
Здесь logging.basicConfig(level=logging.ERROR)
устанавливает минимальный уровень логирования на ERROR. Затем, внутри блока try...except
, в случае возникновения исключения, мы используем logging.error()
для записи сообщения об ошибке в лог. "%s" % e
или "%s", e
форматирует сообщение, включая информацию об исключении. Важно настроить logging
для указания места хранения логов (файл, консоль, и т.д.) и формата записи.
Для записи ошибок в лог с помощью logging.error()
, сначала необходимо настроить модуль logging
. Вот пример:
import logging
# Настройка логгера (минимальный уровень - ERROR, вывод в файл, формат сообщения)
logging.basicConfig(filename='error.log', level=logging.ERROR,
format='%(asctime)s - %(levelname)s - %(message)s')
try:
# Код, который может вызвать ошибку
result = 10 / 0
except Exception as e:
# Запись информации об ошибке в лог
logging.error(f"Произошла ошибка: {e}", exc_info=True) # exc_info=True включает трассировку стека
# Альтернативный вариант:
# logging.exception("Произошла ошибка!") # Этот метод автоматически захватывает информацию об исключении
print("Программа продолжает выполняться (если ошибка была обработана).")
Пояснения:
import logging
: Импортирует модуль logging
.logging.basicConfig(...)
: Это самый простой способ настройки логгера.
filename='error.log'
: Указывает файл, в который будут записываться логи. Если его не указать, логи будут выводиться в консоль.level=logging.ERROR
: Устанавливает минимальный уровень логирования. Будут записываться только сообщения уровня ERROR
, CRITICAL
и выше. Другие уровни (DEBUG
, INFO
, WARNING
) будут игнорироваться.format='%(asctime)s - %(levelname)s - %(message)s'
: Определяет формат сообщения лога.
%(asctime)s
: Время записи сообщения.%(levelname)s
: Уровень сообщения (ERROR, WARNING и т.д.).%(message)s
: Само сообщение.logging.error(f"Произошла ошибка: {e}", exc_info=True)
: Записывает сообщение об ошибке в лог.
f"Произошла ошибка: {e}"
: Само сообщение об ошибке, включающее описание исключения.exc_info=True
: Важный параметр! Включает в лог полную трассировку стека, что очень полезно для отладки.logging.exception("Произошла ошибка!")
: Эквивалентно logging.error("Произошла ошибка!", exc_info=True)
. Он автоматически добавляет информацию об исключении в сообщение лога. Используйте этот метод внутри блока except
.Как это работает:
try
, оно перехватывается блоком except
.except
, logging.error()
записывает информацию об ошибке в файл error.log
(или в консоль, если файл не был указан в basicConfig
).exc_info=True
включает трассировку стека, что позволяет точно определить, где произошла ошибка.Важно: Не забывайте правильно настраивать уровень логирования (level
) в зависимости от ваших потребностей. Например, если вы хотите записывать также предупреждения, установите level=logging.WARNING
.
Продвинутые темы (по желанию):