Могут ли логи и CherryPy использовать один и тот же конфигурационный файл? - PullRequest
4 голосов
/ 14 сентября 2010

Оба модуля регистрации Python и API конфигурации CherryPy используют ConfigParser файлы.Поэтому я предположил, что мог бы использовать один единственный файл конфигурации для конфигурации своих собственных приложений, конфигурации журналирования и конфигурации CherryPy.

Когда мои журналы регистрации и CherryPy были разделены, они работали нормально, и мой файл конфигурации выполняет анализбез ошибок с помощью API ConfigParser.Тем не менее, 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.

1 Ответ

4 голосов
/ 14 сентября 2010

Краткий ответ: нет, вы, вероятно, не можете смешивать их. Как описано в docs : «Записи конфигурации всегда являются парой ключ / значение, например server.socket_port = 8080. Ключом всегда является имя, а значением всегда является объект Python. значение, которое вы устанавливаете, представляет собой int (или другое число), оно должно выглядеть как Python int, например, 8080. Если значение является строкой, его нужно заключить в кавычки, как строку Python. "

Несмотря на то, что нам нужны произвольные типы Python в наших значениях конфигурации CherryPy, CherryPy использует ConfigParser просто потому, что мы не хотим писать собственный синтаксический анализатор для раздела и синтаксиса ввода.

...