SpringBoot-18-之AOP+log4j 记录访问请求信息

mac2022-06-30  108

<!--aop依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
AOP拦截类
/** * 作者:张风捷特烈 * 时间:2018/8/17 0017:11:06 * 邮箱:1981462002@qq.com * 说明:AOP+log4j 记录访问请求信息 */ @Aspect @Component public class LogAspect { private static final Logger sLogger = Logger.getLogger(LogAspect.class); /** * 拦截com.toly1994.toly_mybatis.controller包下所以方法 */ @Pointcut("execution(public * com.toly1994.toly_mybatis.controller.*.*(..))") public void log() { } /** * 前置通知 * * @param joinPoint */ @Before("log()")//log()方法之前 public void doBefore(JoinPoint joinPoint) { //接收请求,记录请求 ServletRequestAttributes sra = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = sra.getRequest(); //记录日志 sLogger.info("url" + request.getRequestURI().toString()); sLogger.info("method" + request.getMethod()); sLogger.info("ip" + request.getRemoteAddr()); Enumeration<String> names = request.getParameterNames(); while (names.hasMoreElements()) { String name = names.nextElement(); sLogger.info("name:" + name + ",value:{" + request.getParameter(name) + "}"); } } /** * 后置通知 * @param ret */ @AfterReturning(returning = "ret", pointcut = " log() ") public void doAfter(Object ret) { sLogger.info("response" + ret);//处理完成,返回 } }

访问上篇的接口:http://localhost:8080/findByName?name=赤凰

12:04:39,451 INFO LogAspect:46 - url/findByName 12:04:39,453 INFO LogAspect:47 - methodGET 12:04:39,454 INFO LogAspect:48 - ip0:0:0:0:0:0:0:1 12:04:39,455 INFO LogAspect:53 - name:name,value:{赤凰} 12:04:39,460 INFO LogAspect:60 - responseSword(id=24, name=赤凰, atk=0, hit=100, crit=5, attr_id=1, type_id=2)

附录:log4j 简单配置。参考了这里,更多配置见

log4j.properties
#INFO级别 文件输出 控制台输出 log4j.rootLogger=INFO, FILE, CONSOLE #将日志信息输出到磁盘 log4j.appender.FILE=org.apache.log4j.FileAppender #磁盘路径 log4j.appender.FILE.File=F:/SpringBootFiles/log/log.txt #缓存大小,$$:8k log4j.appender.FILE.BufferSize=8192 #请求的日志消息被立即输出,$$:true log4j.appender.FILE.ImmediateFlush=true #日志存储到缓存当中,当缓存满了后才输出到磁盘文件中,$$:false,(与ImmediateFlush互斥) log4j.appender.FILE.BufferedIO=false #指定日志输出的最低级别,$$:DEBUG log4j.appender.FILE.Threshold=DEBUG #追加模式添加,$$:true log4j.appender.FILE.Append=true log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n ################################################################ #将日志信息输出到控制台中 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender #将日志信息使用System.out.println输出到控制台 log4j.appender.CONSOLE.Target=System.out #请求的日志消息被立即打印,$$:true log4j.appender.CONSOLE.ImmediateFlush=true #指定日志打印的最低级别,$$:DEBUG log4j.appender.CONSOLE.Threshold=DEBUG #打印编码 log4j.appender.CONSOLE.encoding=UTF-8 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.conversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

转载于:https://www.cnblogs.com/toly-top/p/9781957.html

最新回复(0)