import logging
import logging.handlers
import sys
from pathlib import Path
def setup_logging():
"""
ログの設定を行う。
- ローテーションファイル(最大10MB、バックアップ5世代)
- 標準出力(コンソール)にも出力
- フォーマット: [YYYY-MM-DD HH:MM:SS] [LEVEL] [MODULE:LINE] メッセージ
"""
log_dir = Path(__file__).resolve().parent /"logs"
log_file = "app.log"
Path(log_dir).mkdir(parents=True, exist_ok=True)
log_path = Path(log_dir) / log_file
log_format = "[%(asctime)s] [%(levelname)s] [%(module)s:%(lineno)d] %(message)s"
date_format = "%Y-%m-%d %H:%M:%S"
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
file_handler = logging.handlers.RotatingFileHandler(
log_path, maxBytes=10_000_000, backupCount=5, encoding="utf-8"
)
file_handler.setFormatter(logging.Formatter(log_format, datefmt=date_format))
file_handler.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(logging.Formatter(log_format, datefmt=date_format))
console_handler.setLevel(logging.INFO)
logger.addHandler(file_handler)
logger.addHandler(console_handler)
logging.info("Logging is set up successfully.")
setup_logging()