【问题标题】:JAVA - too much logging statements in code flow [closed]JAVA - 代码流中的日志记录语句过多[关闭]
【发布时间】:2018-01-24 00:59:39
【问题描述】:
  private void httpGetAccessToken() throws IOException {
        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();

        logger.debug("access token value = " + accessToken);
        logger.debug("access token gain time is : ", instant.toString());
    }

上面的日志语句太多了。这是正常的吗?或者我应该删除其中的一些,还是有什么技术可以解决这个问题,比如 AOP 或设计模式?

【问题讨论】:

  • 如果您真的希望它们消失,只需将它们注释掉即可。
  • 您还可以将日志记录级别从debug 更改为info,以根据您监控的内容减少日志记录量
  • 可以修改代码吗?
  • 也许 OP 正在寻找一种外包日志记录的方法,这样它就不会过多地混淆实际逻辑。在那种情况下,他会搜索模式建议或库之类的东西。因此,请参阅 (1)(2) 之类的问题。
  • 我倾向于同意。日志行妨碍阅读和理解代码本身。显然,将它们注释掉也无济于事。最好的做法取决于所有这些日志记录的目的。是不是有个开发者不知道怎么用调试器?

标签: java


【解决方案1】:

选择一个简单的解决方案。

最后有一个 log.debug 语句,并在其中记录所有参数:访问令牌 url、响应、令牌增益值和时间。此外,由于这些语句提供了每一步的信息,我的预感是这些信息是为了排除故障。在这种情况下,使用日志级别作为跟踪。

TL:DR;

你问,

“上面的日志记录太多了,这正常吗?”

答案是主观的。在它旨在替代使用 IDE 进行调试的情况下,这是正常的。我们称之为微记录。很好地排除故障,但由于 I/O 太多,会影响 prod 环境中的性能。想象一下,这条微记录代码在生产中运行,每秒至少有 500 个线程访问它。此外,日志看起来就像一场噩梦。

你问

" ...有什么技术可以解决这个问题"

这不是问题。需要代码调整。确保日志语句更少并捕获异常。在下面的代码中,urlresponse 可能为空。捕获这些异常,否则有时任何数量的日志记录都将是徒劳的。 对于捕获的异常,请在 catch 块中使用 log.error,并带有 exception.getMessage()

    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 的解决方案来记录请求的来源,以及 log 方法中的非敏感请求数据。在 doSomething() 之前调用 log 方法。开始here深入了解详情

【讨论】:

    猜你喜欢
    • 2013-02-13
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 2011-04-22
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多