@@ -64,6 +64,22 @@ def format(self, record: logging.LogRecord) -> str:
6464 return capture .get ().rstrip ()
6565
6666
67+ def add_file_handler (logger : logging .Logger , log_path : Path ) -> None :
68+ """Add a file handler to the logger with standard formatting."""
69+ log_path .parent .mkdir (parents = True , exist_ok = True )
70+ file_handler = logging .FileHandler (log_path )
71+ file_handler .setLevel (_FILE_LEVEL )
72+
73+ # Use a standard formatter for file logs with time, name, and level
74+ file_formatter = logging .Formatter (
75+ fmt = "%(asctime)s [%(name)s] %(levelname)s %(message)s" ,
76+ datefmt = "%Y-%m-%d %H:%M:%S" ,
77+ )
78+ file_handler .setFormatter (file_formatter )
79+
80+ logger .addHandler (file_handler )
81+
82+
6783def get_logger (name : str , * , emoji : str = "" , log_path : Path | None = None ) -> logging .Logger :
6884 """Get logger. Use this instead of `logging.getLogger` to ensure
6985 that the logger is set up with the correct handlers.
@@ -86,17 +102,6 @@ def get_logger(name: str, *, emoji: str = "", log_path: Path | None = None) -> l
86102 logger .propagate = True
87103
88104 if log_path is not None :
89- log_path .parent .mkdir (parents = True , exist_ok = True )
90- file_handler = logging .FileHandler (log_path )
91- file_handler .setLevel (_FILE_LEVEL )
92-
93- # Use a standard formatter for file logs with time, name, and level
94- file_formatter = logging .Formatter (
95- fmt = "%(asctime)s [%(name)s] %(levelname)s %(message)s" ,
96- datefmt = "%Y-%m-%d %H:%M:%S" ,
97- )
98- file_handler .setFormatter (file_formatter )
99-
100- logger .addHandler (file_handler )
105+ add_file_handler (logger , log_path )
101106
102107 return logger
0 commit comments