4 votes

Le logging et CherryPy peuvent-ils partager le même fichier de configuration ?

Tant le Python module de journalisation y L'API de configuration de CherryPy utiliser ConfigParser fichiers. J'ai donc supposé que je pouvais utiliser un seul fichier de configuration pour la configuration de mes propres applications, la configuration de la journalisation et la configuration de CherryPy.

Lorsque ma journalisation et CherryPy étaient séparés, ils fonctionnaient bien, et mon fichier de configuration est analysé sans erreur à l'aide de l'api ConfigParser. Cependant, CherryPy semble vomir sur cette section :

[loggers]
keys=root,myapp,cherrypy,cperror,cpaccess

en donnant l'exception suivante :

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'",))

La documentation de CherryPy ne dit jamais que CherryPy a besoin que son fichier de configuration soit séparé de vos autres configurations, mais je commence à penser que cela pourrait être nécessaire. La documentation indique que la configuration du site et de l'application doit être séparée si vous avez plus d'une application par site, mais ce n'est pas le cas. semble comme un problème différent... est-ce qu'il confond ma configuration de journalisation avec celle d'une application CherryPy ?

Est-ce possible ? Si ce n'est pas le cas, je ne sais pas pourquoi CherryPy se soucie d'utiliser la bibliothèque ConfigParser en premier lieu.

4voto

fumanchu Points 8291

Réponse courte : non, vous ne pouvez probablement pas les mélanger. Comme décrit dans le docs : " Les entrées de configuration sont toujours une paire clé/valeur, comme server.socket_port = 8080. La clé est toujours un nom, et la valeur est toujours un objet Python. En d'autres termes, si la valeur que vous définissez est un int (ou un autre nombre), elle doit ressembler à un int Python, par exemple 8080. Si la valeur est une chaîne, elle doit être citée, comme une chaîne Python."

Même si nous voulons des types Python arbitraires dans nos valeurs de configuration CherryPy, CherryPy utilise le ConfigParser simplement parce que nous ne voulions pas écrire notre propre analyseur syntaxique pour les sections et les entrées.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X