logger.py•1.81 kB
"""ロギング設定モジュール"""
import logging
import sys
import os
def setup_logging(level=logging.INFO, log_file=None):
"""
ロギングの設定をします。
Args:
level: ロギングレベル、デフォルトはINFO
log_file: ログファイルのパス(指定した場合はファイルにも出力)
Returns:
設定済みのロガー
"""
# ルートロガーの設定
logger = logging.getLogger()
logger.setLevel(level)
# 既存のハンドラをクリア
for handler in logger.handlers[:]:
logger.removeHandler(handler)
# コンソールハンドラの設定
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setLevel(level)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)
logger.addHandler(console_handler)
# ファイルハンドラの設定(指定された場合)
if log_file:
# ディレクトリ作成(必要な場合)
log_dir = os.path.dirname(log_file)
if log_dir and not os.path.exists(log_dir):
os.makedirs(log_dir)
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(level)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# 重要なライブラリのロガーも設定
for module in ['nijivoice_mcp', 'fastmcp', 'httpx', 'asyncio']:
module_logger = logging.getLogger(module)
module_logger.setLevel(level)
# FastMCPのデバッグを有効にする(エラー調査用)
if level <= logging.DEBUG:
logging.getLogger('fastmcp').setLevel(logging.DEBUG)
return logger