springBoot整合日志相关

1:新建log4j.properties文件 :

log4j.properties:

  1. #log4j.rootLogger=CONSOLE,info,error,DEBUG
  2. log4j.rootLogger=info,error,CONSOLE,DEBUG
  3. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
  4. log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
  5. log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
  6. log4j.logger.info=info
  7. log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
  8. log4j.appender.info.layout=org.apache.log4j.PatternLayout
  9. log4j.appender.info.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
  10. log4j.appender.info.datePattern='.'yyyy-MM-dd
  11. log4j.appender.info.Threshold = info
  12. log4j.appender.info.append=true
  13. #log4j.appender.info.File=/home/admin/pms-api-services/logs/info/api_services_info
  14. log4j.appender.info.File=/Users/dddd/Documents/testspace/pms-api-services/logs/info/api_services_info
  15. log4j.logger.error=error
  16. log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
  17. log4j.appender.error.layout=org.apache.log4j.PatternLayout
  18. log4j.appender.error.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
  19. log4j.appender.error.datePattern='.'yyyy-MM-dd
  20. log4j.appender.error.Threshold = error
  21. log4j.appender.error.append=true
  22. #log4j.appender.error.File=/home/admin/pms-api-services/logs/error/api_services_error
  23. log4j.appender.error.File=/Users/dddd/Documents/testspace/pms-api-services/logs/error/api_services_error
  24. log4j.logger.DEBUG=DEBUG
  25. log4j.appender.DEBUG=org.apache.log4j.DailyRollingFileAppender
  26. log4j.appender.DEBUG.layout=org.apache.log4j.PatternLayout
  27. log4j.appender.DEBUG.layout.ConversionPattern=%d{yyyy-MM-dd-HH-mm} [%t] [%c] [%p] - %m%n
  28. log4j.appender.DEBUG.datePattern='.'yyyy-MM-dd
  29. log4j.appender.DEBUG.Threshold = DEBUG
  30. log4j.appender.DEBUG.append=true
  31. #log4j.appender.DEBUG.File=/home/admin/pms-api-services/logs/debug/api_services_debug
  32. log4j.appender.DEBUG.File=/Users/dddd/Documents/testspace/pms-api-services/logs/debug/api_services_debug

log4j使用代码:

  1. private static Logger log = Logger.getLogger(IndexController.class);
  2.  
  3. log.info("-----------")

2:使用AOP统一处理Web请求日志

2.1POM文件新增依赖

  1. <dependency>
  2.  
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-aop</artifactId>
  5.  
  6. </dependency>

2.2:新增aop配置文件:

 WebLogAspect :

  1. package com.dengwei.springdemo.aop;
  2.  
  3. import org.aspectj.lang.JoinPoint;
  4. import org.aspectj.lang.annotation.AfterReturning;
  5. import org.aspectj.lang.annotation.Aspect;
  6. import org.aspectj.lang.annotation.Before;
  7. import org.aspectj.lang.annotation.Pointcut;
  8. import org.jboss.logging.Logger;
  9. import org.springframework.stereotype.Component;
  10. import org.springframework.web.context.request.RequestContextHolder;
  11. import org.springframework.web.context.request.ServletRequestAttributes;
  12.  
  13. import javax.servlet.http.HttpServletRequest;
  14. import java.util.Enumeration;
  15.  
  16. @Aspect
  17. @Component
  18. public class WebLogAspect {
  19. private static Logger logger = Logger.getLogger(WebLogAspect.class);
  20.  
  21. @Pointcut("execution(public * com.dengwei.springdemo.controller..*.*(..))")
  22. public void webLog() {
  23. }
  24.  
  25. @Before("webLog()")
  26. public void doBefore(JoinPoint joinPoint) throws Throwable {
  27. // 接收到请求,记录请求内容
  28. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  29. HttpServletRequest request = attributes.getRequest();
  30. logger.info("#####################请求开始####################");
  31. // 记录下请求内容
  32. logger.info("URL : " + request.getRequestURL().toString());
  33. logger.info("HTTP_METHOD : " + request.getMethod());
  34. logger.info("IP : " + request.getRemoteAddr());
  35. Enumeration<String> enu = request.getParameterNames();
  36. while (enu.hasMoreElements()) {
  37. String name = (String) enu.nextElement();
  38. logger.info("name:{" + name + "},value:{" + request.getParameter(name) + "}");
  39. }
  40.  
  41. }
  42.  
  43. @AfterReturning(returning = "ret", pointcut = "webLog()")
  44. public void doAfterReturning(Object ret) throws Throwable {
  45. // 处理完请求,返回内容
  46. logger.info("RESPONSE : " + ret);
  47. logger.info("#####################请求结束####################");
  48. }
  49. }

详细参考博客:

https://www.cnblogs.com/bigben0123/p/7779357.html

springBoot----aop--整合日志相关的更多相关文章

  1. SpringBoot+AOP整合

    SpringBoot+AOP整合 https://blog.csdn.net/lmb55/article/details/82470388 https://www.cnblogs.com/onlyma ...

  2. 【SpringBoot】整合日志框架

    一.日志框架概述 1.1 日志框架的产生 1.2 市面上的日志框架 二.SLF4j 使用与整合 2.1 如何在系统中使用SLF4j 2.2 如何整合日志框架 2.3 SpringBoot中的日志关系 ...

  3. 记一次基于springboot+aop实现日志记录实战

    1. 为什么要记录日志 好处: a. 可以对一些重要功能进行记录,方便以后跟踪是谁操作此功能的. b. 在操作某些功能时可能会发生异常,但每次出现异常我们想定位日志都要去服务器查看我们的日志.有了日志 ...

  4. SpringBoot日志相关

    SpringBoot使用的是SLF4j当门面,Logback当实现完成 日志级别 数字越大,级别越高,框架只会输出大于等于当前日志级别的信息 ERROR 40 WARN 30 INFO 20 DEBU ...

  5. springboot aop 自定义注解方式实现完善日志记录(完整源码)

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 一:功能简介 本文主要记录如何使用aop切面的方式来实现日志记录功能. 主要记录的信息有: 操作人,方法名,参数,运行时间,操作类型 ...

  6. springboot aop 自定义注解方式实现一套完善的日志记录(完整源码)

    https://www.cnblogs.com/wenjunwei/p/9639909.html https://blog.csdn.net/tyrant_800/article/details/78 ...

  7. springboot(整合多数据源demo,aop,定时任务,异步方法调用,以及获取properties中自定义的变量值)

    有这么一个需求 每个部门,需要操作的数据库不同,A部门要将数据放test数据库,B 部门数据 要放在test1数据库 同一个项目 需要整合 多个数据源 上传个demo 方便自己以后回看!!!!!!!! ...

  8. 使用SpringBoot AOP 记录操作日志、异常日志

    平时我们在做项目时经常需要对一些重要功能操作记录日志,方便以后跟踪是谁在操作此功能:我们在操作某些功能时也有可能会发生异常,但是每次发生异常要定位原因我们都要到服务器去查询日志才能找到,而且也不能对发 ...

  9. SpringBoot AOP处理请求日志处理打印

    SpringBoot AOP处理请求日志处理打印 @Slf4j @Aspect @Configuration public class RequestAopConfig { @Autowired pr ...

随机推荐

  1. JLOI2016 简要题解

    「JLOI2016」侦查守卫 题意 有一个 \(n\) 个点的树,有 \(m\) 个关键点需要被监视.可以在其中一些点上插眼,在 \(i\) 号点上放眼需要花费 \(w_i\) 的代价,可以监视距离 ...

  2. 板载 SPI-FLASH 的烧写方法

    @2018-12-15 [筹划] 通过烧录器(JTAG/SWD)即可方便的烧写板载外部 FLASH [参考] 如何更好地设计面向在板烧录的产品(一)SPI Flash篇 keil将程序装入外部FLAS ...

  3. 工作队列.py

    #对列模式图Work Queue背后的主要思想是避免立即执行资源密集型任务的时,需要等待其他任务完成.所以我们把任务安排的晚一些,我们封装一个任务到消息中并把它发送到队列,一个进程运行在后端发送并最终 ...

  4. zabbix3.2添加web页面监控(Web monitoring)

    应用场景: 存在一种情况:nginx或者httpd服务本身运行正常,但是网页挂了,类似于网页被黑,或者40X之类的... 可以用zabbix把web页面访问也监控起来,第一时间得知web崩溃信息并做相 ...

  5. MySQL -- 单行函数

    大小写控制函数 SELECT LOWER('HelloWrold'), UPPER('HelloWorld'); 字符控制函数 SELECT REPLACE('abcdababab','p','m') ...

  6. 我眼中的 Docker(二)Image

    Docker 安装 如何安装 docker 详见官网: installation 或者 中文指南. 不过 linux 上我推荐用 curl 安装,因为 apt-get 中源要么没有 docker,要么 ...

  7. 洛谷P3810 陌上花开 CDQ分治(三维偏序)

    好,这是一道三维偏序的模板题 当然没那么简单..... 首先谴责洛谷一下:可怜的陌上花开的题面被无情的消灭了: 这么好听的名字#(滑稽) 那么我们看了题面后就发现:这就是一个三维偏序.只不过ans不加 ...

  8. 【洛谷P3455】ZAP-Queries

    题目大意:求 \[\sum\limits_{i=1}^a\sum\limits_{j=1}^b[gcd(i,j)=c]\] 题解:学会了狄利克雷卷积. \[\epsilon=\mu \ast 1\] ...

  9. python基础之IO编程

    读文件 with open('/path/to/file', 'r') as f: print(f.read()) 调用read()会一次性读取文件的全部内容,read()函数里面可以传入每次最多读取 ...

  10. [转]深入理解CSS中的层叠上下文和层叠顺序

    http://www.zhangxinxu.com/wordpress/2016/01/understand-css-stacking-context-order-z-index/ 零.世间的道理都是 ...