JAVA - 代码流中的日志语句太多

时间:2018-01-24 00:59:39

标签: java

def to_dict(obj):
    return json.loads(json.dumps(obj, default=lambda o: o.__dict__))

上面的日志记录太多了。这是正常的吗?或者我应该删除其中的一些,还是有任何技术来解决这个问题,比如AOP或设计模式?

1 个答案:

答案 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以深入了解详细信息