java - 在方法内部使用日志来跟踪方法的执行是不好的做法?

标签 java log4j spring-aop

我目前正在使用 Spring MVC 开发一个 Restful 服务。

我读到日志记录是一个横切问题,所以我想知道使用像 log.info("A variable value") 这样的日志语句是否是不好的做法。内部服务门面方法。

  • 我们是否应该删除这些日志语句并将它们放入拦截器类型的对象中,该对象的唯一职责是记录日志?

  • 方法是否充满 log.debug 消息,其职责是帮助跟踪方法执行不良实践?如果是的话,如果拦截器只能访问方法参数,我们如何将这个责任转移给拦截器

  • 如果我需要信息更丰富的跟踪执行,我该如何实现?

最佳答案

  1. 如果您不了解某个方法正在做什么,那么就会出现严重问题,您就失去了对软件的控制。

  2. 有时需要它,但应尽快删除。除此之外,日志语句通过添加非逻辑“噪音”使理解代码变得更加困难。

  3. 方法应该足够小,以便只需付出很少的努力就可以轻松完全理解它们,只有少数异常(exception)。参见“叔叔”鲍勃·马丁。

  4. 我被引入一个项目,因为性能太慢而无法使用。我一天之内就解决了这个问题,问题是日志记录,我删除了它,性能提高了 25 倍以上。

关于java - 在方法内部使用日志来跟踪方法的执行是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50194589/

相关文章:

java - Swagger ui 未加载 swagger api json

java - 方法被解释为变量

unix - tomcat java.util.logging进程

tomcat - 如何在 web servlet 的 jUnit 编码中管理 log4j.properties

java - log4j 追加器配置

java - @Around 在 Spring AOP 中没有被调用

java - 注释可以获取上下文对象吗?

java - JTable中添加Image时显示的字符串路径

java - 使用 Java 为 POS 创建自定义收据

spring - 如何使用 Spring AOP(或 AspectJ)定义/配置多个方面的优先级