springboot添加AOP日志配置

目录

  • 1,在pom.xml配置文件中添加以下配置
  • 2,自定义配置文件logback.xml,该配置文件位置在templates文件夹下第一层,和html文件夹位置并列。
  • 3,logback.xml文件配置内容
  • 4,写一个LogUtil类

@(springboot添加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;
    }
}

原文地址:https://www.cnblogs.com/fantongxue/p/12443300.html

时间: 2024-10-09 10:29:15

springboot添加AOP日志配置的相关文章

SpringBoot整合aop日志管理

1. 开发前准备 1.1 前置知识 java基础自定义注解.反射 Spring aop SpringBoot简单基础知识即可 1.2 环境参数 开发工具:IDEA 基础环境:Maven+JDK8 所用技术:SpringBoot.lombok.mybatisplus.Spring aop SpringBoot版本:2.1.4 1.3 涉及知识点 自定义注解. 反射 spring aop 环绕通知 2. aop日志实现 AOP(Aspect Oriented Programming)是一个大话题,这

SpringBoot整合+logback日志配置

本次演示的代码结构如下,基于maven,整合SpringBoot.Spring.Mybaits的SSM框架.同时测试logback日志框架的使用及配置. 1.创建maven工程,修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="h

springboot多环境日志配置,启动时logback-test.xml文件冲突导致启动失败:openFile(null,true) call failed. java.io.FileNotFoundException

如题,在项目中用到了4个环境的日志配置文件,启动时在application.properties中指定环境,让springboot自动加载logback对应的配置文件: 每个环境的日志目录都不一样,比如sit和test环境分别是: 如果spring.profiles.active配置的是test,那么一切正常,非test环境,则启动失败.比如我现在配置spring.profiles.active=sit来启动联调环境,报错日志如下: 2020-01-10 14:32:33.579 |-ERROR

SpringBoot中的日志配置

SpringBoot支持JavaUtilLogging,Log4J,Log4J2和Logback作为日志框架,无论使用哪种日志框架,SpringBoot已为当前使用日志框架的控制台输出及文件输出做好了配置. 默认情况下,SpringBoot使用Logback作为日志框架 配置日志级别: logging.file=D:/mylog/log.log 配置日志文件,格式为logging.level.包名=级别: logging.level.org.springframework.web=DEBUG 原

springboot 关于log4j日志配置

自动加载配置文件:(1)如果采用log4j输出日志,要对log4j加载配置文件的过程有所了解.log4j启动时,默认会寻找source folder下的log4j.xml配置文件,若没有,会寻找log4j.properties文件.然后加载配置.配置文件放置位置正确,不用在程序中手动加载log4j配置文件.如果将配置文件放到了config文件夹下,在build Path中设置下就好了. log4j日志配置文件的命名一般采用log4j.properties,位置放在resources/log4j.

SpringBoot之简单日志配置

我的目的指定一个文件夹输出:(不采用指定文件的原因是一个文件的大小时间长了会很大,不利于处理) logging: level: root: INFO org.sselab: controller: INFO path: C:\Users\pinker\Desktop\myfile\bootLog 1 使用 path 方式文件会默认 10M 分割 比如:springboot1.log springboot2.log -...2 注意下上面两个的优先级,如果 file 和 path 同时存在,毫无疑

aop为系统添加操作日志,注入或配置声明的方式来实现

最近做项目实现操作记录添加日志,由于aop这两种实现方式各有优缺点,所以都实现了一下以后根据具体业务选择. 1实现方式一注入: 1.1首先在xml中开启aop注入,需要引入的包此处省略,可百度自己查找. <aop:aspectj-autoproxy /> 1.2添加链接点 package com.oasis.wyvern.res.service.base.logService; import java.lang.annotation.*; @Target({ElementType.PARAME

从头认识Spring-3.8 简单的AOP日志实现(注解版)-扩展添加检查订单功能,以便记录并检測输入的參数

这一章节我们讨论一下扩展添加检查订单功能,以便记录并检測输入的參数. 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch03.topic_1_8; public class Cake { private String name = ""; public String getName() { return name; } public void setName(String name) { this.name =

从头认识Spring-3.4 简单的AOP日志实现-扩展添加检查订单功能,以便记录并检測输入的參数

这一章节我们再上一个章节的基础上加上一个检查订单功能 1.domain 蛋糕类: package com.raylee.my_new_spring.my_new_spring.ch03.topic_1_4; public class Cake { private String name = ""; public String getName() { return name; } public void setName(String name) { this.name = name; }