现在的项目用Flask实现了一个事件处理服务,会从MQ中接收消息进行格转后写入到MySQL数据库。
所有的日志都是通过logging模块同时打到文件和标准输出。
在用tornado运行flask的时候发现标准输出的日志内容格式异常:
vs INFO 2015-12-01 17:30:36,518 [ sqs_utils(16):93:read_messages ] SQS: event name ObjectRemoved:Delete will be ignored
INFO:vvs:SQS: event name ObjectRemoved:Delete will be ignored
例如上面的日志,第一行为日志模块实际输出的效果。莫名其妙的会出现第二行这种格式的日志。
由于应用部署在docker中,日志最好直接打到标准输出,所以请问有什么好的解决办法没?
第二条日志记录应该是root logger的handler输出,默认情况下日志会在handlers之间处理,并向上层冒泡。
如下,日志
callHandlers
的代码。找到输出第一条日志的
logger
对象,设置logger.propagate = 0
就能避免第二条日志输出。