SpringBoot+Maven项目实战(6):整合Log4j和Aop,实现简单的日志记录
2016-11-04 11:54
1426 查看
目录结构
pom.xml文件添加依赖
<!--log4j2--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency> <!-- aop --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="INFO"> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" /> </Console> </Appenders> <Loggers> <Logger name="com.sbm" level="trace" additivity="false"> <AppenderRef ref="Console" /> </Logger> <Root level="error"> <AppenderRef ref="Console" /> </Root> </Loggers> </Configuration>
Aop记录Log类:AppLogAspect
package com.sbm.aspects; import com.sbm.util.IPUtil; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; 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.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; import javax.servlet.http.HttpServletRequest; import java.util.Arrays; import java.util.Enumeration; /** * sbm * Created by yadong.zhang on com.sbm.aspects * User:yadong.zhang * Date:2016/10/21 * Time:15:53 */ @Component @Aspect /* * 定义切面执行的优先级,数字越低,优先级越高 * 在切入点之前执行:按order值有小到大的顺序执行 * 在切入点之后执行:按order值由大到小的顺序执行 */ @Order(-5) public class AppLogAspect { private Logger logger = LogManager.getLogger(AppLogAspect.class); // 保证每个线程都有一个单独的实例 private ThreadLocal<Long> time = new ThreadLocal<>(); @Pointcut("execution(* com.sbm.controller..*.*(..))") public void pointcut() { } @Before("pointcut()") public void doBefore(JoinPoint joinPoint) { time.set(System.currentTimeMillis()); ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); //记录请求的内容 logger.info("Request URL: " + request.getRequestURL().toString()); logger.info("Request Method: " + request.getMethod()); logger.info("User-Agent: " + request.getHeader("User-Agent")); logger.info("Class Method: " + joinPoint.getSignature().getDeclaringTypeName() + "." + joinPoint.getSignature().getName()); logger.info("Cookies: " + request.getCookies()); logger.info("Params: " + Arrays.toString(joinPoint.getArgs())); Enumeration<String> enums = request.getParameterNames(); while (enums.hasMoreElements()) { String paraName = enums.nextElement(); logger.info(paraName + ":" + request.getParameter(paraName)); } } @AfterReturning("pointcut()") public void doAfterReturning(JoinPoint joinPoint) { logger.info("耗时 : " + ((System.currentTimeMillis() - time.get())) + "ms"); logger.info("AppLogAspect.doAfterReturning()"); } }
简单的controller请求
@RequestMapping("/message/{currentPage}") public String message(@PathVariable("currentPage") Integer currentPage, Model model){ if(currentPage!= null){ PageHelper.startPage(currentPage, 11); } LOGGER.debug("程序执行的时候输出Log日志..."); List<Message> messages = messageService.list(); model.addAttribute("messages", messages); return "message"; }
测试效果
相关文章推荐
- 从头认识Spring-3.8 简单的AOP日志实现(注解版)-扩展增加检查订单功能,以便记录并检测输入的参数
- 从头认识Spring-3.6 简单的AOP日志实现(注解版)-需要记录方法的运行时间
- Spring Aop实现简单日志记录
- 从头认识Spring-3.1 简单的AOP日志实现-某方法之前的前后记录日志
- springboot aop+@interface实现日志记录
- 从头认识Spring-3.5 简单的AOP日志实现(注解版)-某方法之前的前后记录日志
- 从头认识Spring-3.8 简单的AOP日志实现(注解版)-扩展添加检查订单功能,以便记录并检測输入的參数
- springboot aop 自定义注解方式实现一套完善的日志记录(完整源码)
- 从头认识Spring-3.4 简单的AOP日志实现-扩展添加检查订单功能,以便记录并检測输入的參数
- Spring boot+ maven + thymeleaf + HTML 实现简单的web项目
- SpringBoot+Maven项目实战(3):整合Freemark模板
- 从头认识Spring-3.2 简单的AOP日志实现-需要记录方法的运行时间
- 从头认识Spring-3.2 简单的AOP日志实现-需要记录方法的运行时间
- Springboot整合dubbo构建maven多模块项目(三) - 把server分为api(服务接口定义)和server(服务实现)两个子module
- 【Log4J 系列】:log4j 整合SpringMVC+MyBatis 实现日志记录(01)
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(四)Spring AOP中使用log4j实现http请求日志入mongodb
- Spring Boot 整合 log4j 实现日志管理
- maven项目 spring-boot 整合 mybatis 实现查询功能demo
- springboot 自定义注解+AOP 实现日志记录
- 从头认识Spring-3.4 简单的AOP日志实现-扩展增加检查订单功能,以便记录并检测输入的参数