我有一个名为CustomLogger
的类,它是BaseLogger
的子类,BaseLogger
是logging.Logger
的子类。BaseLogger
从logger.ini
文件加载属性。所以,CustomLogger
只是BaseLogger
的一个外观。
下面是我的代码:
logger.ini
[loggers]
keys=root
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=fileFormatter, consoleFormatter
[logger_root]
level=INFO
handlers=consoleHandler, fileHandler
[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=consoleFormatter
args=(sys.stdout,)
[handler_fileHandler]
class=FileHandler
level=INFO
formatter=fileFormatter
args=('app.log',)
[formatter_fileFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S
[formatter_consoleFormatter]
format=%(levelname)s - %(message)s
datefmt=%Y-%m-%d %H:%M:%S
base_logger。py
from os import path
import logging
import logging.config
class BaseLogger(logging.Logger):
def __init__(self, name):
super().__init__(name)
config_file_path = path.join(path.dirname(__file__), 'logger.ini')
logging.config.fileConfig(config_file_path)
print("Loaded config level:", self.getEffectiveLevel())
custom_logger。py
from .base_logger import BaseLogger
class CustomLogger(BaseLogger):
def __init__(self, name):
super().__init__(name)
main.py
from custom_logger import CustomLogger
logger = CustomLogger('root')
logger.info("hello") #doesn't work
它看起来还可以,但是当我在代码中使用CustomLogger
时,它似乎没有从ini文件. getEffectiveLevel()
返回0,这表示在示例化时未设置记录器级别。
我试过使用logging.setLoggerClass
,但也没有工作。
1条答案
按热度按时间wbgh16ku1#
要使用您的配置文件,您可以这样做:
更新: