Python logging module和CherryPy's Config API都使用ConfigParser个文件。因此,我假设我可以将一个配置文件用于我自己的应用程序配置,它的日志配置和CherryPy的配置。
当我的日志记录和CherryPy分开时,它们工作正常,我的配置文件使用ConfigParser api进行解析而没有错误。但是,CherryPy似乎在这一部分进行了讨论:
[loggers]
keys=root,myapp,cherrypy,cperror,cpaccess
给出以下例外:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 232, in _bootstrap
self.run()
File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "unittests.py", line 431, in main
cherrypy.config.update(server.CONFIG_FILE)
File "/usr/lib/pymodules/python2.6/cherrypy/_cpconfig.py", line 263, in update
config = _Parser().dict_from_file(config)
File "/usr/lib/pymodules/python2.6/cherrypy/_cpconfig.py", line 383, in dict_from_file
return self.as_dict()
File "/usr/lib/pymodules/python2.6/cherrypy/_cpconfig.py", line 374, in as_dict
raise ValueError(msg, x.__class__.__name__, x.args)
ValueError: ("Config error in section: 'loggers', option: 'keys', value: 'root,myapp,cherrypy,cperror,cpaccess'. Config values must be valid Python.", 'TypeError', ("unrepr could not resolve the name 'root'",))
CherryPy文档从不说CherryPy需要将其配置文件与其他配置分开,但我开始认为这可能是必要的。文档说如果每个站点有多个应用程序,那么站点和应用程序配置可能需要分开,但似乎就像一个不同的问题...它是否错误地将我的日志配置错误地用于CherryPy应用程序配置?
这可能吗?如果没有,那么我不确定为什么CherryPy甚至会首先使用ConfigParser库。
答案 0 :(得分:4)
简短的回答:不,你可能无法混合它们。如docs中所述:“配置条目始终是键/值对,如server.socket_port = 8080.键始终是名称,值始终是Python对象。即,如果值你设置的是一个int(或其他数字),它需要看起来像一个Python int;例如,8080。如果值是一个字符串,它需要被引用,就像一个Python字符串。“
即使我们想在CherryPy配置值中使用任意Python类型,CherryPy也只是使用ConfigParser,因为我们不想为节和语句语法编写自己的解析器。