gpt4 book ai didi

python - 如何调试 Python 日志记录配置文件错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:03:40 25 4
gpt4 key购买 nike

我已将 Python 的日志记录模块添加到我的代码中,以摆脱乱七八糟的打印语句,但我却被配置错误所困扰。错误消息提供的信息不多。

Traceback (most recent call last):
File "HDAudioSync.py", line 19, in <module>
logging.config.fileConfig('../conf/logging.conf')
File "/usr/lib64/python2.6/logging/config.py", line 84, in fileConfig
handlers = _install_handlers(cp, formatters)
File "/usr/lib64/python2.6/logging/config.py", line 162, in _install_handlers
h = klass(*args)
TypeError: __init__() takes at most 5 arguments (21 given)

我的配置文件中没有任何内容提供 21 个参数。

这是配置文件

[loggers]
keys=root,main, sftp, jobapi

[handlers]
keys=console, logfile, syslog

[formatters]
keys=simple, timestamp

[logger_root]
level=NOTSET
handlers=logfile

[logger_main]
level=DEBUG
handlers=console, logfile, syslog
propagate=1
qualname=main


[logger_sftp]
level=DEBUG
handlers=console, logfile, syslog
propagate=1
qualname=sftp


[logger_jobapi]
level=DEBUG
handlers=console, logfile, syslog
propagate=1
qualname=jobapi

[handler_console]
class=StreamHandler
level=DEBUG
formatter=simple
args=(sys.stdout,)

[handler_logfile]
class=FileHandler
level=DEBUG
formatter=timestamp
args=('../log/audiosync.log')


[handler_syslog]
class=FileHandler
level=WARN
formatter=timestamp
args=('../log/audiosync.sys.log')

[formatter_simple]
format=%(levelname)s - %(message)s

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

这是我主模块中的日志初始化代码:

import logging
import logging.config
import logging.handlers

logging.config.fileConfig('../conf/logging.conf')
logger = logging.getLogger('main')

我不是在寻找我在这里做错了什么(尽管那会很好),而是在寻找调试它的方法。

谢谢。

最佳答案

您可以深入研究 Python 源代码来调查这类问题。该库的大部分内容都是用 Python 实现的,无需了解解释器的内部细节即可读懂。 hg.python.org为存储库提供一个 Web 界面,方便浏览。我找不到 2.6 的分支,但相关声明位于当前修订版的第 147 行。

您可以看到 args 是从一个 eval 生成的,它从每个 handler_* 部分获取 args 键的值配置文件。然后使用解包 (*) 操作扩展该 args 变量,为 klass() 创建参数。

在你的配置文件中你有这一行:

args=('../log/audiosync.log')

它是一个 20 个字符的字符串,被解压缩为单个字符的元组,与传递给 __init__self 对象一起构成 21 个参数在错误消息中。您缺少制作 1 元素元组所需的尾随逗号:

args=('../log/audiosync.log',)
^-- missing

同样的错误出现在 handler_syslog 部分。

关于python - 如何调试 Python 日志记录配置文件错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23021864/

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