Одной из распространённых проблем, с которой сталкиваются начинающие программисты на Python, является ловля исключений и их логирование. Рассмотрим пример. Пусть имеется следующий код, который выполняет загрузку файла на FTP-сервер:
import ftplib
FTPADDR = "some ftp address"
def upload_to_ftp(con, filepath):
try:
f = open(filepath,'rb') # file to send
con.storbinary('STOR '+ filepath, f) # Send the file
f.close() # Close file and FTP
print('File successfully uploaded to '+ FTPADDR)
except, e:
print('Failed to upload to ftp: '+ str(e))
В этом коде используется блок try/except для отлова исключений, которые могут возникнуть при работе с FTP-сервером. Когда возникает исключение, оно выводится на экран с помощью функции print(). Однако, в реальных приложениях такой подход не всегда удобен. Часто требуется сохранять информацию об исключениях в файл для последующего анализа.
Логирование исключений с помощью модуля logging
Для решения этой задачи в Python предусмотрен специальный модуль logging. С его помощью можно легко настроить вывод информации об исключениях в файл. Вот как можно изменить пример выше для использования logging:
import ftplib
import logging
logger = logging.getLogger('ftpuploader')
hdlr = logging.FileHandler('ftplog.log')
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.INFO)
FTPADDR = "some ftp address"
def upload_to_ftp(con, filepath):
try:
f = open(filepath,'rb') # file to send
con.storbinary('STOR '+ filepath, f) # Send the file
f.close() # Close file and FTP
logger.info('File successfully uploaded to '+ FTPADDR)
except Exception as e:
logger.error('Failed to upload to ftp: '+ str(e))
Теперь, вместо вывода информации на экран, сообщения об успешной загрузке файла или об ошибке будут записываться в файл ftplog.log.
Помимо этого, стоит обратить внимание на изменение в блоке except. Вместо общей формы except, e использована форма except Exception as e, которая является более предпочтительной и устраняет возможные проблемы с синтаксисом.
Таким образом, с помощью модуля logging можно легко и удобно логировать исключения в Python.
Перейти в телеграм, чтобы получить результаты теста





Забрать
Добавить комментарий