在基于Buildout的Plone项目的特定模块中使用不同的记录器级别

2024-09-30 16:37:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我是logging我们的一个Plone包的一些调试信息,当buildout logger级别设置为debug时需要呈现这些信息,但是我发现使用这些信息有点困难,因为还有一些其他模块(如Chameleontransaction)使用相同的级别,但是非常详细,如下所示:

2014-01-17 16:56:38 DEBUG chameleon.loader loading module from cache: 7a9bea82827d89ebb6409b5b5b3c446f.py.
2014-01-17 16:56:38 DEBUG chameleon.loader loading module from cache: 05974e2b844eb50bd08b35e69524ff1e.py.
2014-01-17 16:56:38 DEBUG chameleon.loader loading module from cache: 05974e2b844eb50bd08b35e69524ff1e.py.
2014-01-17 16:56:38 DEBUG chameleon.loader loading module from cache: fd6cd084759f934ad5b1873dcc864e89.py.
2014-01-17 16:56:38 DEBUG chameleon.loader loading module from cache: fd6cd084759f934ad5b1873dcc864e89.py.
2014-01-17 16:56:38 DEBUG chameleon.loader loading module from cache: 388b0bfda4923b35fa189b2f6f1e352e.py.
2014-01-17 16:56:38 DEBUG chameleon.loader loading module from cache: 388b0bfda4923b35fa189b2f6f1e352e.py.
2014-01-17 16:56:38 DEBUG txn.140171035764480 commit <Connection at 05b26150>
2014-01-17 16:56:38 DEBUG txn.140171035764480 commit
2014-01-17 16:56:38 DEBUG txn.140171035764480 new transaction
2014-01-17 16:56:38 DEBUG txn.140171035764480 abort
2014-01-17 16:56:38 DEBUG txn.140171035764480 new transaction
2014-01-17 16:56:38 DEBUG txn.140171027371776 new transaction
2014-01-17 16:56:38 DEBUG txn.140171035764480 commit
2014-01-17 16:56:38 DEBUG txn.140171035764480 new transaction
2014-01-17 16:56:38 DEBUG txn.140171035764480 abort

有没有办法为这些其他模块提供不同的记录器级别?在

我在我的构建.cfg公司名称:

^{pr2}$

Tags: 模块frompydebug信息cachenewloader
3条回答

不能为buildout中的特定模块(产品)设置调试级别。在

构建event-log-level是一个全局设置。在

您不能在没有修补程序的情况下更改其他程序包的日志级别。在

但是,你可以使用下一个更高的级别(我认为是记录器.warn()在包中将实例更改为此级别。在

或者使用grep打开实例.loggrep只知道你的包裹的名字。在

我不确定这是否与fRiSi的建议相同,但这是我几周前解决问题的方法:

import logging

logger = logging.getLogger('my.product')

# Our logging will be shown with level at INFO & not with level at WARN
logger.setLevel(logging.WARN)

...

def update(self):

    logger.info("starting banner search at %s " % self.context )
    if IFolderish.providedBy(self.context):
        logger.info("findBannerImageFor(self) %s " % self.context )

这不会按原样显示任何日志记录,但您只需将相关行更改为:logger.setLevel(logging.INFO),您将看到全部内容(没有任何事务内容)

相关问题 更多 >