我的初始化代码如下
# app.py
fmt = "%(asctime)s - %(request_id)s - %(name)s - %(levelname)s - %(message)s"
logging.basicConfig(format=fmt, level=logging.INFO)
# user controller.py
import logging
logging.info("info success getting profile for user_id " + str(id))
它适用于dev
和staging
,甚至可以在production
中使用。它在2个月前停止了。从那时起我就怀疑配置了,所以我对log_level进行了硬编码 - 这在某种程度上起了作用。它现在正在记录消息,只是与其他环境的格式不一样
例如staging
2018-03-08 07:32:24,661 - API_USER_23a75d85c1a0 - root - ERROR - success getting profile for user_id 1111
但在production
同样的信息将是:
ERROR:root:success getting profile for user_id 1111
我可以做些什么来调试它?
答案 0 :(得分:0)
显然,如果已经配置了根记录器处理程序,logging.basicConfig
生效,如果您之前登录则会发生这种情况。太糟糕了。应该是一个尖叫的大肥胖标志,“你的init没有生效!!”
我的解决方案是在调用root.handlers
basicConfig
为空
root = logging.getLogger()
if root.handlers:
root.error('haha , that\'s why the basicConfig didn\'t take effect!!')
for handler in root.handlers:
root.removeHandler(handler)
logging.basicConfig(format=fmt, level=self.app.config.get('LOG_LEVEL'))