在我的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'
}
}
}