11import logging
22from logging .handlers import RotatingFileHandler
3+ from pathlib import Path
34
45
56class Logger :
67 def __init__ (self , log_file_path : str , logger_name : str ):
78 self .log_file_path = log_file_path
89 self .logger = logging .getLogger (logger_name )
910 self .logger .setLevel (logging .DEBUG )
10- self .create_file_handler ()
11-
12- def create_file_handler (self ):
13- file_handler = RotatingFileHandler (
14- self .log_file_path , maxBytes = 1024 * 1024 * 10 , backupCount = 10
15- )
16- file_formatter = logging .Formatter (
17- "%(asctime)s [%(levelname)s] %(name)s - %(message)s (File: %(filename)s, Line: %(lineno)d)" ,
18- datefmt = "%Y-%m-%d %H:%M:%S" ,
19- )
20- file_handler .setFormatter (file_formatter )
21- self .logger .addHandler (file_handler )
11+ self .logger .addHandler (get_file_handler (log_file_path ))
2212
2313 def info (self , msg : str ):
2414 self .logger .info (msg )
@@ -34,3 +24,26 @@ def error(self, msg: str):
3424
3525 def critical (self , msg : str ):
3626 self .logger .critical (msg )
27+
28+
29+ def get_file_handler (log_file_path : str ) -> RotatingFileHandler :
30+ ensure_log_file_exists (log_file_path )
31+
32+ file_handler = RotatingFileHandler (
33+ log_file_path , maxBytes = 1024 * 1024 * 10 , backupCount = 10
34+ )
35+ file_formatter = logging .Formatter (
36+ "%(asctime)s [%(levelname)s] %(name)s - %(message)s (File: %(filename)s, Line: %(lineno)d)" ,
37+ datefmt = "%Y-%m-%d %H:%M:%S" ,
38+ )
39+ file_handler .setFormatter (file_formatter )
40+
41+ return file_handler
42+
43+
44+ def ensure_log_file_exists (log_file_path : str ):
45+ log_file = Path (log_file_path )
46+ log_file .parent .mkdir (parents = True , exist_ok = True )
47+
48+ if not log_file .exists ():
49+ log_file .touch ()
0 commit comments