我有一个包,其中包含多个组件,这些组件将从使用日志记录和输出有用信息中受益匪浅。
我不想做的是为每个文件“设置”正确的日志记录,并在以下位置进行:
import logging
logging.basicConfig(level=DEBUG)
my_function = logging.getLogger("my_function")
my_class = logging.getLogger("my_class")
我尝试了几种方法,其中一种是将样板代码添加到实用程序模块内的类中,并尝试执行如下操作:
from util import setlogging
set_logging()
但即使上面的解决方案对我来说看起来也不干净,并且会导致问题,因为 setLogger 没有__call__
方法。我喜欢的是,我的“set_logging”类将从配置文件中读取并具有一些默认值,因此无论我想要什么级别或什么类型的日志记录格式,它都会正确设置它。
有没有办法在我的包中全面初始化正确的日志记录?也许在__init__.py
file?
为了尽可能详细,setlogging(现在是一个函数,而不是一个类)如下所示:
def setlogging(config=None):
if config == None:
config = config_options() # sets default values
levels = {
'debug': DEBUG,
'info': INFO
}
level = levels.get(config['log_level'])
log_format = config['log_format']
datefmt = config['log_datefmt']
basicConfig(
level = level,
format = log_format,
datefmt = datefmt)