Skip to content

Commit 46cef8f

Browse files
committed
fix(log): logger would not work when log file doesn't initially exist
1 parent cc18bd2 commit 46cef8f

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

src/mastermind/libs/logs/logger.py

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,14 @@
11
import logging
22
from logging.handlers import RotatingFileHandler
3+
from pathlib import Path
34

45

56
class 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

Comments
 (0)