4

PythonロギングモジュールCherryPyのConfigAPIはどちらもConfigParserファイルを使用します。したがって、私は、自分のアプリケーション構成、ログ構成、およびCherryPyの構成に単一の構成ファイルを使用できると想定しました。

ロギングとCherryPyが別々の場合、それらは正常に機能し、ConfigParserAPIを使用して構成ファイルはエラーなしで解析されます。ただし、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ライブラリを使用することさえわざわざする理由がわかりません。

4

1 に答える 1

4

簡単な答え:いいえ、おそらくそれらを混ぜることはできません。ドキュメントで説明されているように:「構成エントリは、server.socket_port = 8080のように、常にキーと値のペアです。キーは常に名前であり、値は常にPythonオブジェクトです。つまり、設定する値がint(または他の数値)の場合、Python intのように見える必要があります。たとえば8080です。値が文字列の場合は、Python文字列のように引用符で囲む必要があります。」

CherryPyの構成値に任意のPythonタイプが必要な場合でも、セクションとエントリの構文に独自のパーサーを記述したくないという理由だけで、CherryPyはConfigParserを使用します。

于 2010-09-14T16:19:01.940 に答える