SpringBoot + 整合Log4j
- 1.屏蔽SpringBoot的logging
-
<!-- 排除springboot自带的logging 日志--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency>
- 2.添加log4j
-
<!-- 添加log4j --> <!-- SpringBoot下的Log4j的最新版本为1.3.8 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j</artifactId> <version>1.3.8.RELEASE</version> </dependency>
- 3.resources/log4j.properties文件创建并配置
log4j.rootLogger=INFO,Console,File log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c - %L]%m%n log4j.appender.File = org.apache.log4j.RollingFileAppender #设置日志输出路径 log4j.appender.File.File = C:/Users/JinChao/Desktop/sbtest/logs/info.log log4j.appender.File.MaxFileSize = 10MB log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c - %L]%m%n
- 4.测试:在controller中用下
@RestController @RequestMapping("user") public class UserController { Logger logger=Logger.getLogger(UserController.class); @Autowired private IUserService iUserService; @RequestMapping("add") @ResponseBody public String add() { String username = "zjc1"; String password = "zjc1234"; logger.info("sasdaad"+username); iUserService.add(username, password); return "SUCCESS"; } }
- 5.结果在桌面指定文件夹有日志文件,内容为
......................省略..................... [INFO] [2019-10-29 01:03:28][org.springframework.web.servlet.DispatcherServlet - 489]FrameworkServlet 'dispatcherServlet': initialization started [INFO] [2019-10-29 01:03:28][org.springframework.web.servlet.DispatcherServlet - 508]FrameworkServlet 'dispatcherServlet': initialization completed in 27 ms [INFO] [2019-10-29 01:03:28][com.zjc.web.controller.UserController - 24]sasdaadzjc1
SpringBoot + AOP处理Web请求日志
- 前提:log4j导入,在上面的基础上
- 1.添加AOP依赖
-
<!-- AOP --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
- 2.aspect/创建切面类:仅供参考
-
3.在App中配置切面类扫描路径@Aspect @Component//配置bean public class WebLogAspect { private Logger logger = Logger.getLogger(getClass()); //切入点扫描所有controller的所有方法 @Pointcut("execution(public * com.zjc.web.controller..*.*(..))") public void webLog() { } @Before("webLog()") public void doBefore(JoinPoint joinPoint) throws Throwable { // 接收到请求,记录请求内容 ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attributes.getRequest(); // 记录请求内容 logger.info("---------------request----------------"); logger.info("URL : " + request.getRequestURL().toString()); logger.info("HTTP_METHOD : " + request.getMethod()); logger.info("IP : " + request.getRemoteAddr()); Enumeration<String> enu = request.getParameterNames(); while (enu.hasMoreElements()) { String name = (String) enu.nextElement(); logger.info("name:" + name + "value" + request.getParameter(name)); } } @AfterReturning(returning = "ret", pointcut = "webLog()") public void doAfterReturning(Object ret) throws Throwable { logger.info("---------------response----------------"); // 处理完请求,返回内容 logger.info("RESPONSE : " + ret); } }
- @ComponentScan(basePackages = {"....",.....,"com.zjc.aspect"})