在Pyramid应用程序中记录到SQLAlchemy记录器

时间:2016-03-17 16:03:09

标签: python logging sqlalchemy pyramid pylons

我在ABCDEFG 中定义了SQA记录器,将SQA查询记录到一个单独的文件中:

development.ini

现在,它可以工作,也就是说,SQA只记录到该文件。

但是,我还希望这个特定的记录器将其他消息记录到SQA日志,即归档到[handler_sqa] class = FileHandler args = ('%(here)s/log/sqlalchemy.log','a') # "level = INFO" logs SQL queries. # "level = DEBUG" logs SQL queries and results. # "level = WARN" logs neither. (Recommended for production systems.) level = INFO formatter = generic [logger_sqlalchemy] level = INFO handlers = sqa qualname = sqlalchemy.engine.base.Engine propagate = 0 。我可以得到像这样的SQA记录器:

log/sqlalchemy.log

但是,它会记录到main(即sqa_log = logging.getLogger('logger_sqlalchemy') )记录器而不是..

如何将其他消息记录到SQA记录器实例而不是根记录器?

1 个答案:

答案 0 :(得分:1)

记录器配置为处理前缀为sqlalchemy.engine.base.Engine的任何内容。因此,您可以创建一个新的记录器logging.getLogger('sqlalchemy.engine.base.Engine.foo'),但这是不好的做法,我认为为了您自己的目的劫持sqlalchemy命名空间。或者,我认为你应该定义一个不同的记录器,它也共享sqa处理程序。

[handler_sqa]
# all the same

[logger_myown]
handlers = sqa
propagate = 0
qualname = mysqa

您可以通过logging.getLogger('mysqa')抓取新的记录器。