是的,Python裝飾器可以用于日志記錄。裝飾器是一種在不修改原始函數(shù)代碼的情況下,為函數(shù)添加新功能的方法。這在日志記錄中非常有用,因?yàn)樗试S你在不改變函數(shù)定義的情況下,為其添加日志記錄功能。
以下是一個(gè)簡(jiǎn)單的示例,展示了如何使用裝飾器記錄函數(shù)的調(diào)用信息:
import functools
import logging
# 配置日志記錄
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
def log_decorator(func):
@functools.wraps(func)
def wrapper(*args, **kwargs):
logging.info(f"Calling {func.__name__} with args: {args} and kwargs: {kwargs}")
result = func(*args, **kwargs)
logging.info(f"{func.__name__} returned: {result}")
return result
return wrapper
@log_decorator
def add(a, b):
return a + b
add(1, 2)
在這個(gè)示例中,我們首先配置了日志記錄,然后定義了一個(gè)名為log_decorator
的裝飾器。這個(gè)裝飾器接受一個(gè)函數(shù)作為參數(shù),并返回一個(gè)新的函數(shù)wrapper
。在wrapper
函數(shù)中,我們使用logging.info
記錄函數(shù)的調(diào)用信息和返回值。最后,我們使用@log_decorator
修飾add
函數(shù),這樣當(dāng)我們調(diào)用add
函數(shù)時(shí),它的調(diào)用和返回信息將被記錄。