def to_dict(obj):
return json.loads(json.dumps(obj, default=lambda o: o.__dict__))
上面的日志记录太多了。这是正常的吗?或者我应该删除其中的一些,还是有任何技术来解决这个问题,比如AOP或设计模式?
答案 0 :(得分:0)
选择一个简单的解决方案。
最后有一个log.debug语句,并在那里记录所有参数:访问令牌URL,响应,令牌增益值和时间。此外,由于这些语句提供了每个步骤的信息,我的预感是这些信息片段旨在进行故障排除。在这种情况下,使用日志级别作为跟踪。
TL:DR;
你问,
"上面的日志记录太多了。这是正常的吗?"
答案是主观的。在它可以替代使用IDE进行调试的情况下,这是正常的。我们称之为微测井。很好的排除故障,但由于I / O太多而在产品环境中达到性能。想象一下这个在生产中运行的mirco-logged代码片段,每秒至少有500个线程访问它。此外,日志看起来像是一场噩梦。
你问
" ......有没有任何技术可以解决这个问题"
这不是问题。代码调整是必需的。确保日志语句较少,并捕获异常。在下面的代码中,url
response
可能为空。捕获这些异常,否则有时候任何数量的日志记录都将无效。
对于捕获的异常,使用exception.getMessage()
中的catch块中的log.error。
String url = accessTokenUrl.getValue();
logger.debug("access token url : " + url);
String response = WechatHttpClient.post(url);
logger.debug("access token response : " + response);
Map<String, Object> map = JSONObject.parseObject(response);
accessToken = map.get("access_token").toString();
instant = Instant.now();
你问,
..像AOP或设计模式?
再次主观,并根据应用而变化。作为一个简单而天真的示例,您可能希望在多个组件访问公共方法doSomething()的情况下使用AOP,每个方法都具有不同数据的请求。您可以使用基于AOP的解决方案来记录请求的来源,以及日志方法中的非敏感请求数据。调用日志方法&#34;之前&#34; doSomething()。开始here以深入了解详细信息