在每个方法中登录与使用方面登录?

jslywgbw  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(297)

这个问题在这里已经有了答案

如何使用spring aop和spring boot登录(1个答案)
47分钟前关门了。
每当我用spring boot编写api或程序时,我的日志策略通常如下所示:

@Service
public class ShortLinkServiceImpl implements ShortLinkService {

    private final Logger log = LoggerFactory.getLogger(this.getClass());

    @Override
    public String getByHashCode(String hashCode)
            throws HashCodeExpiredException, LinkNotFoundException {
          log.info("getByHashCode -> hashCode: {}", hashCode);
         ...
         ...
         //if necessary
         log.info("getByHashCode -> result: {}", result);
    }
}

但是,添加 log.info 我的api中的每个方法看起来都不是一个好方法(至少对我来说)。
有没有什么方法可以编写更干净的日志策略,我正在考虑为我要记录的每个类编写一个方面,并通过使用before和after joinpoint来记录方法的输入和输出。
总而言之,我想多听听这个主题,有没有更方便、更干净的方式。

kfgdxczn

kfgdxczn1#

不是一个答案,但太长的评论,因此张贴作为一个答案。
日志记录是aop的一个经典例子。一个非常详细的解释可以在10.7中阅读。改进传统的日志部分的书aspectj在行动,第二版。
如果aop是确定的方法,那么以下是需要考虑的几点。
一个切入点表达式,如果编写正确,可以针对多个类和相应的建议。为每个类编写方面不是一个理想的方法。请记住,springaop不能将私有方法的执行和随后的日志记录作为目标/建议。您将需要aspectj来实现更细粒度的控制。
@周围的建议将是理想的,而不是之前和之后
据我所知,这不是一个真正的问题,更多的是一个可以讨论/发表意见的主题,这在我看来是不受欢迎的。请通读这个问题以了解更多细节。你可以把它改进成一个特定的问题来得到答案,而不是把它封闭起来。
springaop参考文档是一个很好的开始。

相关问题