デコレーターでログを残す方法

デコレータを使用して関数やメソッドの呼び出しログを残す方法は、一般的なデコレータの使用例の一つです。以下に、デコレータを使ってログを残す方法を示します。この例ではPythonの標準ライブラリのloggingモジュールを使用してログを出力します。

python
import logging # ログの設定 logging.basicConfig(filename='app.log', level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') # ログを残すデコレータ def log_function_call(func): def wrapper(*args, **kwargs): logging.info(f'Calling {func.__name__} with args: {args}, kwargs: {kwargs}') result = func(*args, **kwargs) logging.info(f'{func.__name__} returned: {result}') return result return wrapper # デコレータを使用してログを残す @log_function_call def add(a, b): return a + b @log_function_call def subtract(a, b): return a - b # 関数を呼び出す result1 = add(10, 5) result2 = subtract(10, 5)

このコードでは、log_function_callデコレータを定義しています。このデコレータは呼び出された関数の名前と引数をログに記録し、関数の実行結果もログに記録します。loggingモジュールを使ってログを出力するため、ログファイル(’app.log’)に結果が保存されます。

デコレータを関数に適用する際、@log_function_callのように記述します。デコレータが適用された関数を呼び出すと、関数呼び出しと結果がログに記録されます。

この方法を使用すると、ログを残すデコレータを複数の関数やメソッドに適用して、アプリケーションの実行やデバッグ中に関数の動作を追跡し、問題を特定するのに役立ちます。