gpt4 book ai didi

python - 我可以在没有根记录器的情况下拥有logging.ini 文件吗?

转载 作者:行者123 更新时间:2023-12-02 09:31:34 25 4
gpt4 key购买 nike

这是我的logging.ini 文件的样子:

[loggers]
keys=teja

[handlers]
keys=fileHandler

[formatters]
keys=simpleFormatter

[logger_teja]
level=DEBUG
handlers=fileHandler
qualname=tejaLogger

[handler_fileHandler]
class=logging.FileHandler
level=DEBUG
formatter=simpleFormatter
args=("error.log", "w")

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s

我收到以下错误:

File "test.py", line 22, in <module>
logging.config.fileConfig('logging.ini')
File "/usr/lib/python2.7/logging/config.py", line 79, in fileConfig
_install_loggers(cp, handlers, disable_existing_loggers)
File "/usr/lib/python2.7/logging/config.py", line 183, in _install_loggers
llist.remove("root")
ValueError: list.remove(x): x not in list

请帮我解决这个问题。或者请解释一下“为什么总是需要包含根记录器?”

最佳答案

如果您use the source ,您会发现您必须配置根记录器:

# configure the root first
llist = cp["loggers"]["keys"]
llist = llist.split(",")
llist = list(map(lambda x: x.strip(), llist))
llist.remove("root")
section = cp["logger_root"]
root = logging.root
log = root

(其中 cp 是加载您传入的 .ini 文件的 configparser)

我能想到的唯一原因是explicit is better than implicit ,因此它迫使您准确声明您想要对根记录器执行的操作,以防您认为它会发挥一些作用。虽然我不认为这是一个特别好的理由。这可能只是当时某人的想法。如果你做一些further reading :

The fileConfig() API is older than the dictConfig() API and does not provide functionality to cover certain aspects of logging [... N]ote that future enhancements to configuration functionality will be added to dictConfig(), so it’s worth considering transitioning to this newer API when it’s convenient to do so.

如果你考虑 dictConfig docs ,看来您不必提供 root 记录器。

所以看来您需要指定一个根处理程序,除了向后兼容性之外没有真正好的理由。如果您想解决这个问题,则必须在 Python 文件中指定设置,或者导入 JSON 文件并使用 dictConfig 方法。

关于python - 我可以在没有根记录器的情况下拥有logging.ini 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28737858/

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