我正在使用多个模块在Python中编写Alexa技能,并且希望全局设置日志记录级别和格式,以便不必在每个模块中都这样做。文档和其他Stack Overflow答案向我展示了执行此操作的方法是通过在根日志记录处理程序上设置配置。但是,这不起作用。例如,我目前将此代码块作为在顶层函数中运行的第一个代码:
logging.basicConfig(level='DEBUG'),
format="[ %(levelname)s ] %(asctime)s [%(name)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
logger = logging.getLogger(__name__)
logger.warning('Test')
logger.info('Test')
logger.debug('Test')
经过测试(使用py.test
时,如果相关的话),我得到以下输出:
------------------------ Captured log call -------------------------
lambda_handler.py 18 WARNING Test
如您所见,info
-和debug
级别的日志未处理,并且格式尚未应用。当我在AWS Lambda函数中进行现场测试时,也会发生同样的情况。
但是,更令人困惑的是,当我在IDE的Python控制台中运行上述代码块时,却得到了预期的行为:
[ WARNING ] 2019-03-23 08:20:31 [__main__] Test
[ INFO ] 2019-03-23 08:20:31 [__main__] Test
[ DEBUG ] 2019-03-23 08:20:31 [__main__] Test
我已经搜索了整个代码库,没有任何情况会覆盖此配置,所以我很茫然。所有文档和论坛都向我介绍了这种方法,它甚至可以在纯上下文中使用,但是当我需要它时,它只是行不通。我想念什么?