相关疑难解决方法(0)

使用过滤器记录

我正在使用Logging(import logging)来记录消息.

在1个单独的模块中,我在调试级别记录消息my_logger.debug('msg');

其中一些调试消息来自function_a()和其他来自function_b(); 我希望能够根据它们来自a还是来自b来启用/禁用日志记录;

我猜我必须使用Logging的过滤机制.

有人可以告诉我下面的代码是如何需要检测来做我想要的吗?

import logging
logger= logging.getLogger( "module_name" )

def function_a( ... ):
    logger.debug( "a message" )

def function_b( ... ):
    logger.debug( "another message" )

if __name__ == "__main__":
    logging.basicConfig( stream=sys.stderr, level=logging.DEBUG )

    #don't want function_a()'s noise -> ....
    #somehow filter-out function_a's logging
    function_a()

    #don't want function_b()'s noise -> ....
    #somehow filter-out function_b's logging
    function_b()
Run Code Online (Sandbox Code Playgroud)

如果我将这个简单的例子扩展到每个模块的更多模块和更多的函数,我会关注很多记录器;

我可以将每个模块保持在1个记录器吗?请注意,日志消息是"结构化的",即如果记录它的函数正在进行一些解析工作,它们都包含一个前缀logger.debug("parsing: xxx")- 我能以某种方式用一行来关闭所有"解析"消息(无论发出消息的模块/功能?)

python logging

33
推荐指数
3
解决办法
3万
查看次数

使用dictConfig在python中的日志记录级别安装过滤器

我无法使用dictConfig()语法在日志记录处理程序上安装过滤器.LoggingErrorFilter.filter()简直被忽略,没有任何反应.

我想过滤掉错误消息,以便它们不会在日志输出中出现两次.所以我写了LoggingErrorFilter课并且过度了filter().

我的配置:

class LoggingErrorFilter(logging.Filter):
  def filter(self, record):
    print 'filter!'
    return record.levelno == logging.ERROR or record.levelno == logging.CRITICAL

config = {
      'version': 1,
      'disable_existing_loggers' : False,
      'formatters' : {
        'standard' : {
          'format' : '%(asctime)s %(levelname)s %(name)s::%(message)s',
        },
      },
      'handlers' : {
        'console': {
          'class' : 'logging.StreamHandler',
          'level' : level,
          'formatter' : 'standard',
          'stream' : 'ext://sys.stdout',
        },
        'errorconsole': {
          'class' : 'logging.StreamHandler',
          'level' : 'ERROR',
          'formatter' : 'standard',
          'stream' : 'ext://sys.stderr',
          'filters' …
Run Code Online (Sandbox Code Playgroud)

python logging python-2.7

23
推荐指数
2
解决办法
6367
查看次数

标签 统计

logging ×2

python ×2

python-2.7 ×1