-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
发现getLogger()的在setup == True时,会调用logger.setup(name),然后回调用add_default_handler:
@classmethod
def getLogger(cls, name: str, setup: bool = True):
if name in _loggers:
return cast(cls, _loggers[name])
_logger_class = logging.getLoggerClass()
logging.setLoggerClass(cls)
logger = cast(cls, logging.getLogger(name))
logging.setLoggerClass(_logger_class)
if setup:
logger.setup(name)
_loggers[name] = logger
return logger
def setup(self, name: str, handle: bool = True) -> None:
self.setupConfig()
if handle: self.add_default_handler(name)
def setupConfig(self) -> None:
from django.conf import settings
self.debug_mode = settings.DEBUG
self.format = '{asctime} [{levelname}] {message}'
self.format_style = '{'
self.stack_level = 8
self.setLevel(logging.INFO)
def add_default_handler(self, name: str, *paths: str, format: str = None) -> None:
base_dir = os.path.join(*paths)
os.makedirs(base_dir, exist_ok=True)
file_path = os.path.join(base_dir, name + '.log')
handler = logging.FileHandler(file_path, encoding='UTF8', mode='a')
formatter = logging.Formatter(format or self.format, style=self.format_style)
handler.setFormatter(formatter)
self.addHandler(handler)但是此时paths是空的,导致在os.path.join(*paths)一行报错,因为os.path.join()需要至少一个参数。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels