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