maven依赖
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.7</version>
</dependency>
<dependency>
<groupId>org.spring work.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
import com.google.gson.Gson;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.spring work.context.annotation.Configuration;
import org.spring work.core.annotation.Order;
import org.spring work.stereotype.Component;
import org.spring work.web.context.request.RequestContextHolder;
import org.spring work.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
//申明是个切面
@Aspect
//申明是个spring管理的bean
//@Order(1)
@Component
public class AspectDemo {
public static final Logger log = LoggerFactory.getLogger(AspectDemo.class);
private Gson gson = new Gson();
//申明一个切点 里面是 execution表达式
//注意切点容易出错
@Pointcut(\"execution(public * com.ecg.controller.TestController.*(..))\")
private void controllerAspect(){}
//请求method前打印内容
@Before(value = \"controllerAspect()\")
public void methodBefore(JoinPoint joinPoint){
ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = requestAttributes.getRequest();
//打印请求内容
log.info(\"===============请求内容===============\");
log.info(\"请求地址:\"+request.getRequestURL().toString());
log.info(\"请求方式:\"+request.getMethod());
log.info(\"请求类方法:\"+joinPoint.getSignature());
log.info(\"请求类方法参数:\"+ Arrays.toString(joinPoint.getArgs()));
log.info(\"===============请求内容===============\");
}
//在方法执行完结后打印返回内容
@AfterReturning(returning = \"o\",pointcut = \"controllerAspect()\")
public void methodAfterReturing( o ) {
log.info(\"--------------返回内容----------------\");
log.info(\"Response内容:\" + gson.toJson(o));
log.info(\"--------------返回内容----------------\");
}
}
yml配置
logging: config: classpath:log.
log. 配置
<configuration>
<!-- %m输出的信息, %p日志级别, %t线程名, %d日期, %c类的全名, %i索引 -->
<!-- appender是configuration的子节点,是负责写日志的组件 -->
<!-- ConsoleAppender把日志输出到控制台 -->
<!-- <property name=\"CONSOLE_LOG_PATTERN\" -->
<!-- value=\"%date{yyyy-MM-dd HH:mm:ss} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n\"/> -->
<appender name=\"STDOUT\" class=\"ch.qos.logback.core.ConsoleAppender\">
<encoder>
<!--<pattern>${CONSOLE_LOG_PATTERN}</pattern> -->
<pattern>%date{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) (%file:%line\\)- %m%n</pattern>
<!-- 控制台也要使用utf-8,不要使用gbk -->
<charset>UTF-8</charset>
</encoder>
</appender>
<!-- RollingFileAppender:滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
<!-- 1.先按日期存日志,日期变了,将前一天的日志文件名重命名为xxx%日期%索引,新的日志仍然是sys.log -->
<!-- 2.如果日期没有变化,但是当前日志文件的大小超过1kb时,对当前日志进行分割 重名名 -->
<appender name=\"syslog\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">
<File>${catalina. }/mylog/sys.log</File>
<!-- rollingPolicy:当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名。 -->
<!-- Time dRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责出发滚动 -->
<rollingPolicy class=\"ch.qos.logback.core.rolling.Time dRollingPolicy\">
<!-- 活动文件的名字会根据fileNamePattern的值,每隔一段时间改变一次 -->
<!-- 文件名:log/sys.2017-12-05.0.log -->
<fileNamePattern>${catalina. }/mylog/sys.%d.%i.log</fileNamePattern>
<!-- 每产生一个日志文件,该日志文件的保存期限为30天 -->
<maxHistory>30</maxHistory>
<time dFileNamingAndTriggeringPolicy class=\"ch.qos.logback.core.rolling.SizeAndTime dFNATP\">
<!-- maxFileSize:这是活动文件的大小,默认值是10MB,本篇设置为1KB,只是为了演示 -->
<maxFileSize>100KB</maxFileSize>
</time dFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!-- pattern节点,用来设置日志的输入格式 -->
<pattern>
%d %p (%file:%line\\)- %m%n
</pattern>
<!-- 记录日志的编码 -->
<charset>UTF-8</charset> <!-- 此处设置字符集 -->
</encoder>
</appender>
<!-- 控制台日志输出级别 -->
<root level=\"info\">
<appender-ref ref=\"STDOUT\" />
</root>
<!-- 指定项目中某个包,当有日志操作行为时的日志记录级别 -->
<!-- com.appley为根包,也就是只要是发生在这个根包下面的所有日志操作行为的权限都是DEBUG -->
<!-- 级别依次为【从高到低】:FATAL > ERROR > WARN > INFO > DEBUG > TRACE -->
<logger name=\"com.ecg.controller\" level=\"INFO\">
<appender-ref ref=\"syslog\" />
</logger>
</configuration>
继续阅读与本文标签相同的文章
上一篇 :
马云:阿里巴巴必须成为国家和世界创新的发动机
下一篇 :
python爬取网易新闻
-
2019年9月份 阿里云域名优惠口令汇总
2026-05-18栏目: 教程
-
《安全说道》第三期 | 你家“大门”关好了吗?猪猪侠有话说
2026-05-18栏目: 教程
-
为什么支付宝有这么多“原生”技术牛人?
2026-05-18栏目: 教程
-
阿里巴巴小程序繁星计划 9月27日有话要说
2026-05-18栏目: 教程
-
为什么我会这么多技术,还这么难找工作
2026-05-18栏目: 教程
