相同类中方法间调用时日志Aop失效处理
本篇分享的内容是在相同类中方法间调用时Aop失效处理方案,该问题我看有很多文章描述了,不过大多是从事务角度分享的,本篇打算从日志aop方面分享(当然都是aop,失效和处理方案都是一样),以下都是基于springboot演示;
- 快速定义个日志Appender
- 快速定义个拦截器和日志注解(aop)
- 模拟相同类中方法间调用时aop失效
- Aop失效处理方案(就两种足够了)
快速定义个日志Appender
日志我还是喜欢log4j,大部分朋友也同样吧,这里lombok与log4j结合来完成我们的日志,如下maven包(最新mvn还是建议去官网找):
1 <dependency> 2 <groupId>org.projectlombok</groupId> 3 <artifactId>lombok</artifactId> 4 </dependency> 6 <dependency> 7 <groupId>org.slf4j</groupId> 8 <artifactId>slf4j-api</artifactId> 9 <version>2.0.0-alpha0</version>10 </dependency>11 <dependency>12 <groupId>org.slf4j</groupId>13 <artifactId>slf4j-log4j12</artifactId>14 <version>2.0.0-alpha0</version>15 </dependency>
先继承log4j的AppenderSkeleton重写下append方法,简单记录下就行,如下:
1 public class MyLogAppend extends AppenderSkeleton { 2 private String author; 3 4 public void setAuthor(String author) { 5 this.author = author; 6 } 7 8 @Override 9 protected void append(LoggingEvent loggingEvent) { 10 System.out.println( 11 JsonUtil.formatMsg("date -- {},level -- {},message -- {}", 12 LocalDate.now(), 13 loggingEvent.getLevel(), 14 loggingEvent.getMessage())); 15 } 16 17 @Override 18 public void activateOptions() { 19 super.activateOptions(); 20 System.out.println("author:" + this.author); 21 } 22 23 @Override 24 public void close() { 25 this.closed = true; 26 } 27 28 @Override 29 public boolean requiresLayout() { 30 return false; 31 } 32 }