通过python logging.config配置应用程序
Clor的Python项目详细描述
关闭
Clor是logging配置系统[1]的一个小包装,它允许 它可用于一般应用程序配置。这个名字是这样创造的: “配置器”—“c10r”—“clor”。
使用量
通常有一个配置模块(例如envconf.py)或一个YAML文件在这里 是一个樱桃色的例子:
base = { 'global' : { 'server.socket_host' : '127.0.0.1', 'server.socket_port' : 8080, 'server.thread_pool' : 8 }, 'app' : { 'api' : { '/' : { 'request.dispatch' : { '()' : 'cherrypy._cpdispatch.MethodDispatcher' } } } } } production = (base, { 'global' : { 'server.socket_host' : '0.0.0.0', 'server.thread_pool' : 16, 'tools.auth_basic.on' : True, 'tools.auth_basic.realm' : 'App', 'tools.auth_basic.checkpassword' : 'ext://someapp.password.checker' }, }) development = (base, { 'global' : { 'server.thread_pool' : None, }, 'app' : { 'api' : { '/' : { 'tools.response_headers.on' : True, 'tools.response_headers.headers' : [('Access-Control-Allow-Origin', '*')] } }, 'api2' : 'cfg://app.api' } })
一些观察:
- 嵌套词典递归合并
- logging的ext伪协议
- logging的cfg伪协议
- logging使用()键实例化
- 具有None值的键将被删除
然后在引导代码中可以执行以下操作:
import clor from . import envconf config = clor.configure(*getattr(envconf, 'production')) cherrypy.config.update(config) cherrypy.tree.mount(ApiApplication(), '/api', config['app']['api'])
[1] | https://docs.python.org/3/library/logging.config.html |