1
1
import logging
2
+ import os
2
3
import sys
3
- from logging . handlers import RotatingFileHandler
4
+ from datetime import datetime
4
5
5
6
import structlog
6
7
from structlog .dev import ConsoleRenderer
@@ -51,6 +52,13 @@ def get_agent_logger(name: str, agent_info: AgentInfo) -> structlog.BoundLogger:
51
52
52
53
53
54
def 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
+
54
62
structlog .configure (
55
63
processors = [
56
64
structlog .stdlib .add_log_level ,
@@ -65,16 +73,14 @@ def configure_logger() -> None:
65
73
wrapper_class = structlog .stdlib .BoundLogger ,
66
74
cache_logger_on_first_use = True ,
67
75
)
76
+
68
77
handler_stdout = logging .StreamHandler (sys .stdout )
69
78
handler_stdout .setFormatter (
70
79
structlog .stdlib .ProcessorFormatter (processor = ConsoleRenderer ())
71
80
)
72
81
handler_stdout .setLevel (logging .INFO )
73
82
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 )
78
84
handler_file .setFormatter (
79
85
structlog .stdlib .ProcessorFormatter (processor = JSONRenderer ())
80
86
)
0 commit comments