gpt4 book ai didi

python - 如何在整个项目的 Python 中仅使用一次记录器为多个模块配置/初始化日志记录?

转载 作者:行者123 更新时间:2023-12-05 02:17:50 33 4
gpt4 key购买 nike

我有一个 python 项目,其中包含多个带有日志记录的模块。在开始记录消息之前,我在每个模块中执行初始化(读取日志配置文件并创建根记录器和启用/禁用日志记录)。是否可以在一个地方只执行一次此初始化(比如在一个类中可以称为 Log),以便通过在整个项目中记录来重用相同的设置?

我正在寻找一个合适的解决方案,以便只读取一次配置文件,并且只获取和配置一个记录器,在类构造函数中,或者可能在初始化程序中(__init__.py ).我不想在客户端执行此操作(在 __main__ 中)。我只想在单独的类中进行一次此配置,并在需要日志记录时在其他模块中调用此类。

最佳答案

使用@singleton 模式设置

#log.py
import logging.config
import yaml
from singleton_decorator import singleton

@singleton
class Log:

def __init__(self):

configFile = 'path_to_my_lof_config_file'/logging.yaml

with open(configFile) as f:
config_dict = yaml.load(f)
logging.config.dictConfig(config_dict)
self.logger = logging.getLogger('root')

def info(self, message):
self.logger.info(message)

#module1.py
from Log import Log

myLog = Log()
myLog.info('Message logged successfully)



#module2.py
from Log import Log

myLog = Log() #config read only once and only one object is created
myLog.info('Message logged successfully)

关于python - 如何在整个项目的 Python 中仅使用一次记录器为多个模块配置/初始化日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46927723/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com