Pythonのloggingモジュールでログをファイルと標準出力に同時出力

Pythonloggingモジュールは、ログを効率的に管理するために使われます。logging.StreamHandlerを使えば標準出力にログを送信し、logging.FileHandlerを使うとログをファイルに保存できます。この2つを組み合わせることで、ログをファイルと標準出力に同時に出力できます。

基本設定

以下のコードは、ファイルと標準出力の両方にログを出力する方法を示しています。

import logging
import sys
# ログの設定
file_handler = logging.FileHandler('logfile.log')
console_handler = logging.StreamHandler(sys.stdout)
# ログフォーマットの設定
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
# ルートロガーにハンドラを追加
logging.basicConfig(level=logging.DEBUG, handlers=[file_handler, console_handler])
# ログの出力例
logger = logging.getLogger()
logger.info('This is an info message')

logging.basicConfig()を使った設定

logging.basicConfig()handlers引数でリスト形式のハンドラを渡すことで、ファイルと標準出力にログを出力できます。また、ログのフォーマットも簡単にカスタマイズ可能です。

より高度なログ設定

複雑なログ設定が必要な場合は、dictConfig()や個別にハンドラを設定することで、出力先やフォーマットを柔軟に管理できます。