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

时间:2014-01-17 19:09:29

标签: python logging plone buildout

我是logging我们的Plone包中的一些调试信息,当buildout记录器级别设置为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

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

我在buildout.cfg上使用以下配置:

[instance]
debug-mode = on
event-log-level = DEBUG
verbose-security = on
z2-log-level = DEBUG

3 个答案:

答案 0 :(得分:1)

您无法在buildout中为特定模块(产品)设置调试级别。

buildout event-log-level是一个全局设置。

答案 1 :(得分:0)

您无法更改其他软件包的日志级别,无需修补它们。

然而,你可以使用下一个更高级别(我认为你的包中的logger.warn()会将实例更改为此级别。

或者你在instance.log上使用grep,只在你的包名上使用grep。

答案 2 :(得分:0)

我不确定这是否与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),您将看到所有内容(并且没有任何交易内容)