集成Log4j

(1)在pom.xml中添加依赖

  1. <!--去掉springboot默认的日志-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter</artifactId>
  5. <exclusions>
  6. <exclusion>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-logging</artifactId>
  9. </exclusion>
  10. </exclusions>
  11. </dependency>
  12.  
  13. <!--log4j的依赖-->
  14. <dependency>
  15. <groupId>log4j</groupId>
  16. <artifactId>log4j</artifactId>
  17. <version>1.2.17</version>
  18. </dependency>

springboot默认使用自带的日志,需要先去掉自带的spring-boot-starter-logging,我们引入的log4j才会起作用。

(2)在resources下新建log4j.properties

  1. # Global logging configuration
  2. log4j.rootLogger=DEBUG, stdout,D
  3.  
  4. # MyBatis logging configuration...
  5. log4j.logger.org.mybatis.example.BlogMapper=TRACE
  6.  
  7. # Console output...
  8. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  9. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  10. log4j.appender.stdout.Threshold = DEBUG
  11. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
  12.  
  13. # File output...
  14. log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
  15. #相对路径,相对于tomcat的根目录。
  16. #log4j.appender.D.File = ../logs/error.log
  17. log4j.appender.D.File = D:/logs/error.log
  18. log4j.appender.D.Append = true
  19. log4j.appender.D.Threshold = DEBUG
  20. log4j.appender.D.layout = org.apache.log4j.PatternLayout
  21. log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
  22. log4j.appender.D.encoding=UTF-8

springboot官方推荐日志配置的文件名以-spring结尾,log4j-spring.properties。当然,使用log4j.properties也行。

至此已经集成log4j,springboot会自动使用log4j来管理日志。

我们可以手动输出日志:

  1. Logger logger = Logger.getLogger(UserController.class); //传入当前类的class对象
  2. logger.debug("This is debug message.");
  3. logger.error("This is error message.");

Logger一般写成成员变量的形式,方便在此类的所有方法中使用:

  1. private Logger logger = Logger.getLogger(UserController.class);

注意导入的Logger是:

  1. import org.apache.log4j.Logger;

不要导错了。

如果需要统一记录日志,比如记录每个请求的请求参数、ip,在每个controller中都写Logger,很麻烦,这就需要使用AOP拦截每个请求。


集成AOP

(1)pom.xml中引入依赖

  1. <!--aop的起步依赖-->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-aop</artifactId>
  5. </dependency>

(2)新建包com.chy.aspect,包下新建切面RequestLogAspect

  1. @Aspect
  2. @Component
  3. public class RequestLogAspect {
  4. //Logger对象
  5. private Logger logger=Logger.getLogger(RequestLogAspect.class);
  6.  
  7. //定义切入点,拦截所有controller
  8. @Pointcut("execution(public * com.chy.controller.*.*(..)))")
  9. public void allController(){};
  10.  
  11. //前增强,()中是切入点
  12. @Before("allController()")
  13. public void requestLog(){
  14. //获取request对象
  15. ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
  16. HttpServletRequest request = attributes.getRequest();
  17.  
  18. //请求地址、请求方法、ip
  19. logger.info("url:"+request.getRequestURI());
  20. logger.info("http_method:"+request.getMethod());
  21. logger.info("ip:"+request.getRemoteAddr());
  22.  
  23. //遍历请求参数
  24. Enumeration<String> paramNames = request.getParameterNames();
  25. while (paramNames.hasMoreElements()){
  26. String paramName = paramNames.nextElement();
  27. String paramVal = request.getParameter(paramName);
  28. logger.info(paramName+":"+paramVal);
  29. }
  30. }
  31.  
  32. }

注意调用的logger中的方法、log4j.properties中设置的文件输出等级,等级不够是不会输出到文件的。

SpringBoot 集成Log4j、集成AOP的更多相关文章

  1. springboot集成log4j

    需求: 1.springboot集成log4j 2.mybatis 打印 sql 实现: pom.xml <dependency> <groupId>org.springfra ...

  2. SpringBoot集成log4j,解决log4j.properties不生效问题

    Spring Boot集成log4j其实比较简单,maven的话,在xml中增加log4j依赖就行 <dependency> <groupId>org.springframew ...

  3. SpringBoot(七):集成DataSource 与 Druid监控配置

    绑定DataSource:Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource,Druid是Java语言中最好的数据库连接池,并且能够提供 ...

  4. SpringBoot系列之集成logback实现日志打印(篇二)

    SpringBoot系列之集成logback实现日志打印(篇二) 基于上篇博客SpringBoot系列之集成logback实现日志打印(篇一)之后,再写一篇博客进行补充 logback是一款开源的日志 ...

  5. springboot和mybatis集成

    springboot和mybatis集成 pom  <?xml version="1.0" encoding="UTF-8"?> <proje ...

  6. SSH集成log4j日志环境[转]

    第一步:在web.xml初始化log4j <context-param> <param-name>log4jConfigLocation</param-name> ...

  7. SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL

    1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...

  8. Springboot+MyBatis+JPA集成

      1.前言 Springboot最近可谓是非常的火,本人也在项目中尝到了甜头.之前一直使用Springboot+JPA,用了一段时间发现JPA不是太灵活,也有可能是我不精通JPA,总之为了多学学Sp ...

  9. DEMO: springboot 与 freemarker 集成

    直接在 DEMO: springboot 与 mybatis 集成 基础上,进行修改. 1.pom.xml 中引用 依赖 <dependency> <groupId>org.s ...

随机推荐

  1. 浅谈对Jquery+JSON+WebService的使用小结

    https://www.jb51.net/article/36207.htm  更新时间:2013年04月28日 12:19:55   作者:    我要评论   本篇文章介绍了对Jquery+JSO ...

  2. Bugku-CTF加密篇之进制转换(二进制、八进制、十进制、十六进制,你能分的清吗?)

    进制转换 二进制.八进制.十进制.十六进制,你能分的清吗?

  3. c++中sort函数调用报错Expression : invalid operator <的内部原理

    当我们调用sort函数进行排序时,中的比较函数如果写成如下 bool cmp(const int &a, const int &b) { if(a!=b) return a<b; ...

  4. iOS 自动化打包发布(Fastlane+ Jenkins+蒲公英)

    安装 Xcode 命令行工具:xcode-select --install 安装 fastlane:sudo gem install fastlane --verbose 安装成功后查看版本:fast ...

  5. python连接Oracle的方式以及过程中遇到的问题

    一.库连接步骤 1.下载cx_Oracle模块 下载步骤 工具 pycharm :File--->右键setting--->找到Project Interpreter  -----> ...

  6. matlab 绘制原始信号的谐波

    这里以锯齿信号为例: clear;clc; figure time = 0:1/20:1000; wave = sawtooth(time); subplot(3, 1, 1); plot(time, ...

  7. Centos610-Nginx-TCP代理配置

    1.安装Nginx 详见<nginx>安装 2.下载nginx_tcp_proxy_module模块 下载  wget https://github.com/yaoweibin/nginx ...

  8. JS-常用方法合集

    部分方法使用jQuery!!!//tab切换 /* * 参数tablist为触发事件id * 参数tabmain为执行切换id * 参数ev为触发事件的动作 */ function tab(tabli ...

  9. Dart语言学习(三)Dart数值型

    一.类型 数值型有 num,int, double  num a = ; a = 12.5; print(a); print(a.runtimeType); ; // b = 20.5; print( ...

  10. 放眼全球,关注游戏质量变化:腾讯WeTest发布《2019中国移动游戏质量白皮书》

    2019是中国游戏市场,尤其是手游市场称得上是跌宕起伏的一年,同时也是各大厂商推陈出新突破过去的一年.面对竞争激烈的市场,手游厂商们不仅着眼于游戏质量的提升,更是将一众优秀的国产游戏带入到了海外市场, ...