springboot添加AOP日志配置详解
作者:刻苦的樊同学
这篇文章主要介绍了springboot添加AOP日志配置详解,日志是一种在软件开发中常用的技术,用于记录和跟踪应用程序的运行过程,通过AOP日志,开发人员可以实时监控应用程序的行为,包括方法的调用、参数的传递和返回值的获取等,需要的朋友可以参考下
1,pom.xml配置
文件中添加以下配置
<!--spring aop 包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
2,自定义配置文件logback.xml
该配置文件位置在templates文件夹下第一层,和html文件夹位置并列。
3,logback.xml文件配置内容
<?xml version="1.0" encoding="UTF-8"?> <configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="D:/projects/log" /> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <!-- 按照每天生成日志文件 --> <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--日志文件输出的文件名--> <FileNamePattern>${LOG_HOME}/springbootdemo.log.%d{yyyy-MM-dd}.log</FileNamePattern> <!--日志文件保留天数--> <MaxHistory>30</MaxHistory> </rollingPolicy> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> <!--日志文件最大的大小--> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>10MB</MaxFileSize> </triggeringPolicy> </appender> <!--myibatis log configure--> <logger name="com.apache.ibatis" level="DEBUG"/> <logger name="java.sql.Connection" level="DEBUG"/> <logger name="java.sql.Statement" level="DEBUG"/> <logger name="java.sql.PreparedStatement" level="DEBUG"/> <!-- 日志输出级别 trace<debug<info<warn<error<fatal 级别之间是包含的关系,意思是如果你设置日志级别是trace,则大于等于这个级别的日志都会输出。 trace: 是追踪,就是程序推进以下,你就可以写个trace输出,所以trace应该会特别多,不过没关系,我们可以设置最低日志级别不让他输出。 debug: 调试么,我一般就只用这个作为最低级别,trace压根不用。是在没办法就用eclipse或者idea的debug功能就好了么。 info: 输出一下你感兴趣的或者重要的信息,这个用的最多了。 warn: 有些信息不是错误信息,但是也要给程序员的一些提示,类似于eclipse中代码的验证不是有error 和warn(不算错误但是也请注意,比如以下depressed的方法)。 error: 错误信息。用的也比较多。 fatal: 级别比较高了。重大错误,这种级别你可以直接停止程序了,是不应该出现的错误么!不用那么紧张,其实就是一个程度的问题。 --> <root level="DEBUG"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> <!--日志异步到数据库 --> <!--<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">--> <!--<!–日志异步到数据库 –>--> <!--<connectionSource class="ch.qos.logback.core.db.DriverManagerConnectionSource">--> <!--<!–连接池 –>--> <!--<dataSource class="com.mchange.v2.c3p0.ComboPooledDataSource">--> <!--<driverClass>com.mysql.jdbc.Driver</driverClass>--> <!--<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>--> <!--<user>root</user>--> <!--<password>root</password>--> <!--</dataSource>--> <!--</connectionSource>--> <!--</appender>--> </configuration>
4,写一个LogUtil类
@Component @Aspect public class logUtil { /** * 切入点配置 */ @Pointcut(value = "execution(* com.aaa.service.*.*(..))") public void pointCutOne(){ }<br> /** * 前置通知 * @param joinPoint */ // @Before(value = "pointCutOne()") public void beforeSaveLog(JoinPoint joinPoint){ System.out.println("在调用"+joinPoint.getSignature().getName()+"方法之前,打印。。。"); } /** * 后置通知 * @param joinPoint */ @After(value = "pointCutOne()") public void afterReturningSaveLog(JoinPoint joinPoint){ System.out.println("在调用"+joinPoint.getSignature().getName()+"方法之后,打印。。。"); } /** * 异常通知 * @param joinPoint * @param e */ @AfterThrowing(value = "pointCutOne()",throwing = "e") public void afterThrowingSaveLog(JoinPoint joinPoint,Exception e){ System.out.println("在调用"+joinPoint.getSignature().getName()+"方法时出现了"+e.getClass().getName()+"异常,异常描述:"+e.getMessage()); }<br> /** * 最终通知 */ @AfterReturning(value = "pointCutOne()") public void afterSaveLog(JoinPoint joinPoint){ System.out.println("在调用"+joinPoint.getSignature().getName()+"方法时,无论有没有异常都会打印。。。"); }<br> /** * 环绕通知 */ public Object aroundSaveLog(ProceedingJoinPoint proceedingJoinPoint){ Object proceed = null; System.out.println(System.currentTimeMillis()+"执行业务方法之前---"); try { proceed = proceedingJoinPoint.proceed(); } catch (Throwable throwable) { throwable.printStackTrace(); } System.out.println(System.currentTimeMillis()+"执行业务方法之后---"); return proceed; } }
到此这篇关于springboot添加AOP日志配置详解的文章就介绍到这了,更多相关springbootAOP日志配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!