11import logging
2+ import os
23import sys
3- from logging . handlers import RotatingFileHandler
4+ from datetime import datetime
45
56import structlog
67from structlog .dev import ConsoleRenderer
@@ -51,6 +52,13 @@ def get_agent_logger(name: str, agent_info: AgentInfo) -> structlog.BoundLogger:
5152
5253
5354def configure_logger () -> None :
55+ # 既存のログファイルが存在する場合、日付付きでバックアップする
56+ log_file = "agent.log"
57+ if os .path .exists (log_file ):
58+ timestamp = datetime .now ().strftime ("%Y%m%d_%H%M%S" )
59+ backup_file = f"agent_{ timestamp } .log"
60+ os .rename (log_file , backup_file )
61+
5462 structlog .configure (
5563 processors = [
5664 structlog .stdlib .add_log_level ,
@@ -65,16 +73,14 @@ def configure_logger() -> None:
6573 wrapper_class = structlog .stdlib .BoundLogger ,
6674 cache_logger_on_first_use = True ,
6775 )
76+
6877 handler_stdout = logging .StreamHandler (sys .stdout )
6978 handler_stdout .setFormatter (
7079 structlog .stdlib .ProcessorFormatter (processor = ConsoleRenderer ())
7180 )
7281 handler_stdout .setLevel (logging .INFO )
7382
74- handler_file = RotatingFileHandler (
75- "agent.log" , maxBytes = 1024 * 1024 * 1024 , backupCount = 5
76- )
77- handler_file .doRollover ()
83+ handler_file = logging .FileHandler (log_file )
7884 handler_file .setFormatter (
7985 structlog .stdlib .ProcessorFormatter (processor = JSONRenderer ())
8086 )
0 commit comments