我在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记录器实例而不是根记录器?
答案 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')
抓取新的记录器。