gpt4 book ai didi

Python 日志记录在 2.5 和 2.6 之间不兼容

转载 作者:太空狗 更新时间:2023-10-29 22:24:08 25 4
gpt4 key购买 nike

你能帮我解决以下 Python 2.5 和 2.6 之间的不兼容问题吗?

记录器配置文件:

[loggers]
keys=root,aLogger,bLogger

[handlers]
keys=consoleHandler

[formatters]
keys=

[logger_root]
level=NOTSET
handlers=consoleHandler

[logger_aLogger]
level=DEBUG
handlers=consoleHandler
propagate=0
qualname=a

[logger_bLogger]
level=INFO
handlers=consoleHandler
propagate=0
qualname=b

[handler_consoleHandler]
class=StreamHandler
args=(sys.stderr,)

module_one.py:

import logging
import logging.config

logging.config.fileConfig('logger.conf')
a_log = logging.getLogger('a.submod')
b_log = logging.getLogger('b.submod')

def function_one():
b_log.info("function_one() called.")

module_two.py:

import logging
import logging.config

logging.config.fileConfig('logger.conf')
a_log = logging.getLogger('a.submod')
b_log = logging.getLogger('b.submod')

def function_two():
a_log.info("function_two() called.")

记录器.py:

from module_one import function_one
from module_two import function_two

function_one()
function_two()

Ubuntu 9.04下调用logger.py的输出:

$ python2.5 logger.py
$

$ python2.6 logger.py
function_one() called.
function_two() called.
$

最佳答案

这是一个在 2.5 和 2.6 之间修复的错误。 fileConfig() 函数用于一次性配置,因此不应多次调用 - 无论您选择如何安排。 fileConfig 的预期行为是禁用配置中未明确提及的任何记录器,并启用提到的记录器及其子项;该错误导致 children 在不应该的时候被禁用。示例记录器配置提到记录器“a”和“b”;在调用 getLogger('a.submod') 之后创建一个子记录器。第二个 fileConfig 调用在 Python 2.5 中错误地禁用了它 - 在 Python 2.6 中,记录器没有被禁用,因为它是配置中明确提到的记录器的子项。

关于Python 日志记录在 2.5 和 2.6 之间不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1018527/

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