我有一个包含多个组件的包,这些组件将从使用日志记录和输出有用信息中受益匪浅。
我不想做的是为这些行中的某个地方的每个文件“设置”正确的日志记录:
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
文件?
只是为了尽可能冗长,这就是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)