Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果logging.config.dictConfig()不影响现有记录器,那么它有什么意义?_Python_Logging - Fatal编程技术网

Python 如果logging.config.dictConfig()不影响现有记录器,那么它有什么意义?

Python 如果logging.config.dictConfig()不影响现有记录器,那么它有什么意义?,python,logging,Python,Logging,使用logging.logger提供的API配置记录器,如b.py所示配置现有记录器。使用logging.config.dictConfig()配置日志记录不会配置现有的记录器,如a.py所示 *.py文件 如果库在设置logging.config.dictConfig()之前创建了记录器,则记录器将无法正确配置。图书馆如何处理这个问题?他们是否希望将日志配置传递给他们?他们只是避免在导入期间创建记录器吗?logging.config.dictConfig()会影响现有记录器的配置。但是,默认情

使用
logging.logger
提供的API配置记录器,如
b.py
所示配置现有记录器。使用
logging.config.dictConfig()
配置日志记录不会配置现有的记录器,如
a.py
所示

*.py
文件
如果库在设置
logging.config.dictConfig()
之前创建了记录器,则记录器将无法正确配置。图书馆如何处理这个问题?他们是否希望将日志配置传递给他们?他们只是避免在导入期间创建记录器吗?

logging.config.dictConfig()会影响现有记录器的配置。但是,默认情况下,
dictConfig()
将禁用现有记录器,除非根据在传递给
dictConfig()
的字典中定义了
disable\u existing\u loggers=False
,否则我无法真正理解它。默认情况下,
disable_existing_loggers=True
。可以肯定的是,我强迫它为真,每次我都得到同样的结果。我确保在创建记录器的所有模块之后导入日志记录。我定义了根记录器,这样屏幕上就不会显示调试或信息。但它不起作用,我仍然在屏幕上显示信息。我的指令有:
“记录器”:{“根”:{“级别”:“NOTSET”,“处理程序”:[“控制台”,“文件”],},},},“禁用现有记录器”:True,
~/bar                                                                                    
▶ tail -n +1 *.py
==> a.py <==
import logging
from logging.config import dictConfig

logger = logging.getLogger(__name__)

logging_config = dict(
    version = 1,
    handlers = {
        'h': {'class': 'logging.StreamHandler'}
    },
    root = {
        'handlers': ['h'],
        'level': logging.DEBUG
    }
)

dictConfig(logging_config)

logger.debug("This is a test")

==> b.py <==
import logging

logger = logging.getLogger(__name__)

logging.getLogger().setLevel(logging.DEBUG)
logging.getLogger().addHandler(logging.StreamHandler())

logger.debug("This is a test")
~/bar                                                                                    
▶ python -m a

~/bar                                                                                    
▶ python -m b
This is a test