使用配置文件的 Python 3.2 日志记录导致 KeyError: Raspbian 上的“格式化程序" [英] Python 3.2 logging with config file results in KeyError: 'formatters' on Raspbian
问题描述
我为我的 Python 应用程序配备了日志记录功能,它在我使用 Python 3.4 的 Windows 系统上完美运行.但是当我使用 Raspbian 和 Python 3.2 在我的 Raspberry Pi 上部署应用程序时,我收到以下错误:
I equipped my Python application with logging capability and it works flawlessly on my Windows system with Python 3.4. But when I deploy the application on my Raspberry Pi with Raspbian and Python 3.2, I receive the following error:
Traceback (most recent call last):
File "aurora/aurora_websocket.py", line 265, in <module>
logging.config.fileConfig('logging.conf')
File "/usr/lib/python3.2/logging/config.py", line 70, in fileConfig
formatters = _create_formatters(cp)
File "/usr/lib/python3.2/logging/config.py", line 106, in _create_formatters
flist = cp["formatters"]["keys"]
File "/usr/lib/python3.2/configparser.py", line 941, in __getitem__
raise KeyError(key)
KeyError: 'formatters'
logging.conf 文件(以 UTF-8 编码,没有 BOM):
The logging.conf file (encoded in UTF-8 without BOM):
[loggers]
keys=root,simpleExample
[handlers]
keys=screen
[formatters]
keys=simple,complex
[logger_root]
level=NOTSET
handlers=screen
[logger_simpleExample]
level=DEBUG
handlers=screen
qualname=simpleExample
propagate=0
[handler_screen]
class=StreamHandler
level=DEBUG
formatter=complex
args=(sys.stdout,)
[formatter_simple]
format=%(asctime)s - %(levelname)s - %(message)s
datefmt=
[formatter_complex]
format=%(asctime)s - %(levelname)-8s - <%(module)s : %(lineno)d> - %(message)s
datefmt=
日志配置以简单的单行方式加载:
The logging configuration is loaded in a simple one-liner:
logging.config.fileConfig('logging.conf')
我在这里不知所措,因为如上所述,我的应用程序在 Windows 上运行良好,但在 RPi 上失败.
I'm at a loss here, since, as mentioned above already, my application works fine on Windows, but fails on the RPi.
推荐答案
好吧,这并没有持续多久……结果,我一直在 RPi 上从不同的工作目录运行我的应用程序.因此,相对于不同的工作目录,logging.conf 文件的文件路径被错误地解释.不幸的是,日志库尝试继续处理不存在的文件,并且在这种情况下不会抛出有用的异常.
Well, this didn't last long... Turns out, I've been running my application on the RPi from a different working directory. Consequently, the file path to the logging.conf file is interpreted incorrectly relative to the differing working directory. Unfortunately, the logging library tries to continue on with non-existent files and doesn't throw a useful exception in that case.
这篇关于使用配置文件的 Python 3.2 日志记录导致 KeyError: Raspbian 上的“格式化程序"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!