单独记录库和应用程序

时间:2017-01-12 10:58:06

标签: python logging aiohttp

在我的Python3应用程序中,我使用某些软件包(如aiohttp,asyncio-redis等),默认情况下在其中启用了日志记录。现在,当我在主应用程序中启用日志记录时,来自aiohttp asyncio-redis的日志也会出现在日志文件中。

这就是我所做的:

logging.basicConfig(filename=config['base_dir']+'/../access.log',   
                    level=logging.DEBUG,
                    format='%(levelname)s - %(message)s',
                    datefmt="%Y-%m-%d %H:%M:%S")

我的自定义日志记录如下logging.debug(message)。但是当我看到日志文件时,那里的包日志和我的应用程序日志都存在。我如何将它们放在不同的文件中?我尝试添加2个记录器,使用不同的文件处理程序,如许多SO线程中所建议的那样,但这并没有真正帮助。事实上我所得到的只是空日志。

那么我怎样才能为上述场景提供不同的日志呢?

更新

这是我的dictConfig:

{
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s - %(message)s'
        }
    },
    'handlers': {
        'default': {
            'level': 'DEBUG',
            'formatter': 'simple',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'debug.log',
            'maxBytes': 1024
        },
        'access': {
            'level': 'INFO',
            'formatter': 'simple',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': 'access_log.log',
            'maxBytes': 1024
        }
    },
    'loggers': {
        'my_logger': {
            'handlers': ['default'],
            'level': 'DEBUG',
        },
        'aiohttp.access': {
            'handlers': ['access'],
            'level': 'INFO'
        }
    }
}

0 个答案:

没有答案