问题解决了!
通过消除烧瓶记录器,重复的输出似乎消失了。
app.logger.disabled = True
好像已经成功了。
老实说,我真的不明白伐木工似乎是如何工作的,但我遇到了一个奇怪的问题。
我通过以下代码启动记录器:
utilities_module:
def get_logger(name):
logger = logging.getLogger(name)
if not logger.handlers:
handler = logging.StreamHandler()
formatter = logging.Formatter(
"%(asctime)s %(levelname)s %(name)s %(message)s",
"%Y-%m-%d %H:%M:%S"
)
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.INFO)
return logger
主要模块:
import utilities
logger = utilities.get_logger("Any_Name:")
logger.info("My heart will go on!")
输出“YYYY-MM-DD时间Any_Name:我的心会继续!”应该如此。
问题是:
直到引发异常,然后输出变得重复,但没有日期和时间。
像这样:
2018-03-06 15:33:23 INFO Any_Name: My heart will go on!
INFO:Any_Name:: My heart will go on!
注意额外的2个:
记录器是在类的实例化时创建的,并在类中用作self.logger,并且只实例化一次。
很高兴知道:
这是一个微服务,但重复的日志都在k8中,当在本地运行时,它使用Flask restfull。那些是使用的点子模块
- flask == 0.12
- flask-restful == 0.3.6
- PyYaml == 3.12
- Requests == 2.18.3
- requests-toolbelt == 0.8.0
答案 0 :(得分:0)
如果你有一个烧瓶应用程序,你可以看到删除默认的应用程序记录器是否修复了这个问题:
from flask.logging import default_handler
app.logger.removeHandler(default_handler)
如果确实如此,您的烧瓶应用程序正在配置自己的日志记录。通过删除上面的默认处理程序或通过使用app.logger
注册处理程序来解决此问题,以便烧瓶看到您正在处理自己的日志记录。
您还可以在应用程序配置中设置LOGGER_HANDLER_POLICY
值。
答案 1 :(得分:0)
问题解决了!
通过消除烧瓶记录器,重复的输出似乎消失了。
app.logger.disabled = True
好像已经成功了。