
Задача 3. Логирование
Я недавно столкнулся с задачей логирования функций в своем проекте и хотел поделиться своим опытом с вами. В задаче требуется реализовать декоратор logging‚ который будет отвечать за логирование функций.Чтобы выполнить это задание‚ я создал следующий код⁚
python
import logging
import datetime
def logging_decorator(func)⁚
def wrapper(*args‚ **kwargs)⁚
# Получаем название функции и ее документацию
function_name func.__name__
function_doc func.__doc__
print(f’Название функции⁚ {function_name}’)
print(f’Документация функции⁚ {function_doc}’)
try⁚
# Выполняем функцию и возвращаем результат
result func(*args‚ **kwargs)
return result
except Exception as e⁚
# Записываем ошибку в файл function_errors.log
logging.basicConfig(filename’function_errors.log’‚ levellogging.ERROR)
logging.error(f’Название функции⁚ {function_name}‚ Ошибка⁚ {str(e)} at {datetime.datetime.now}’)
return wrapper
Чтобы использовать этот декоратор‚ достаточно добавить его к функции‚ которую вы хотите логировать. Вот пример⁚
python
@logging_decorator
def divide(a‚ b)⁚
″″″Функция деления двух чисел.″″″
return a / b
@logging_decorator
def multiply(a‚ b)⁚
″″″Функция умножения двух чисел.″″″
return a * b
# Вызываем функции
print(divide(10‚ 2))
print(multiply(5‚ 10))
Этот код добавляет декоратор logging_decorator к функциям divide и multiply. При вызове этих функций‚ на экран будет выведено название функции и ее документация.
Если во время выполнения декорируемой функции возникла ошибка‚ она будет записана в файл function_errors.log. Кроме того‚ в запись ошибки будет добавлена дата и время возникновения ошибки.
Важно отметить‚ что код был дополнен модулем logging для записи ошибок в файл. Кстати‚ вы можете настроить модуль logging в соответствии с вашими нуждами‚ например‚ указать путь к файлу записи ошибок или указать уровень ошибок‚ которые нужно записывать.
Надеюсь‚ что мой опыт в логировании функций поможет вам в вашей работе. Удачи!