2010-09-14 44 views
4

Python logging moduleCherryPy's Config API都使用ConfigParser文件。因此,我認爲我可以使用一個單獨的配置文件進行我自己的應用程序配置,它是日誌記錄配置和CherryPy的配置。日誌記錄和CherryPy可以共享相同的配置文件嗎?

當我的日誌記錄和CherryPy是分開的,它們工作正常,並且我的配置文件使用ConfigParser api解析沒有錯誤。然而,CherryPy的似乎BARF在本節:

[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庫。

回答

4

簡答:不,你可能不能混用它們。如在docs描述:「配置項始終是一個鍵/值對,如server.socket_port = 8080的關鍵是總是一個名稱,值總是一個Python對象即,如果要設置的值是。一個int(或其他數字),它需要看起來像一個Python int;例如,8080.如果該值是一個字符串,它需要被引用,就像一個Python字符串。「

儘管我們希望在我們的CherryPy的配置值任意的Python類型,CherryPy的使用ConfigParser只是因爲我們不想寫我們自己的部分和條目語法分析器。

相關問題