SpringBoot 集成Log4j、集成AOP
集成Log4j
(1)在pom.xml中添加依赖
- <!--去掉springboot默认的日志-->
- <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>
- <!--log4j的依赖-->
- <dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
- </dependency>
springboot默认使用自带的日志,需要先去掉自带的spring-boot-starter-logging,我们引入的log4j才会起作用。
(2)在resources下新建log4j.properties
- # Global logging configuration
- log4j.rootLogger=DEBUG, stdout,D
- # MyBatis logging configuration...
- log4j.logger.org.mybatis.example.BlogMapper=TRACE
- # Console output...
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.Threshold = DEBUG
- log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
- # File output...
- log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
- #相对路径,相对于tomcat的根目录。
- #log4j.appender.D.File = ../logs/error.log
- log4j.appender.D.File = D:/logs/error.log
- log4j.appender.D.Append = true
- log4j.appender.D.Threshold = DEBUG
- log4j.appender.D.layout = org.apache.log4j.PatternLayout
- log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
- log4j.appender.D.encoding=UTF-8
springboot官方推荐日志配置的文件名以-spring结尾,log4j-spring.properties。当然,使用log4j.properties也行。
至此已经集成log4j,springboot会自动使用log4j来管理日志。
我们可以手动输出日志:
- Logger logger = Logger.getLogger(UserController.class); //传入当前类的class对象
- logger.debug("This is debug message.");
- logger.error("This is error message.");
Logger一般写成成员变量的形式,方便在此类的所有方法中使用:
- private Logger logger = Logger.getLogger(UserController.class);
注意导入的Logger是:
- import org.apache.log4j.Logger;
不要导错了。
如果需要统一记录日志,比如记录每个请求的请求参数、ip,在每个controller中都写Logger,很麻烦,这就需要使用AOP拦截每个请求。
集成AOP
(1)pom.xml中引入依赖
- <!--aop的起步依赖-->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-aop</artifactId>
- </dependency>
(2)新建包com.chy.aspect,包下新建切面RequestLogAspect
- @Aspect
- @Component
- public class RequestLogAspect {
- //Logger对象
- private Logger logger=Logger.getLogger(RequestLogAspect.class);
- //定义切入点,拦截所有controller
- @Pointcut("execution(public * com.chy.controller.*.*(..)))")
- public void allController(){};
- //前增强,()中是切入点
- @Before("allController()")
- public void requestLog(){
- //获取request对象
- ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
- HttpServletRequest request = attributes.getRequest();
- //请求地址、请求方法、ip
- logger.info("url:"+request.getRequestURI());
- logger.info("http_method:"+request.getMethod());
- logger.info("ip:"+request.getRemoteAddr());
- //遍历请求参数
- Enumeration<String> paramNames = request.getParameterNames();
- while (paramNames.hasMoreElements()){
- String paramName = paramNames.nextElement();
- String paramVal = request.getParameter(paramName);
- logger.info(paramName+":"+paramVal);
- }
- }
- }
注意调用的logger中的方法、log4j.properties中设置的文件输出等级,等级不够是不会输出到文件的。
SpringBoot 集成Log4j、集成AOP的更多相关文章
- springboot集成log4j
需求: 1.springboot集成log4j 2.mybatis 打印 sql 实现: pom.xml <dependency> <groupId>org.springfra ...
- SpringBoot集成log4j,解决log4j.properties不生效问题
Spring Boot集成log4j其实比较简单,maven的话,在xml中增加log4j依赖就行 <dependency> <groupId>org.springframew ...
- SpringBoot(七):集成DataSource 与 Druid监控配置
绑定DataSource:Spring Boot默认的数据源是:org.apache.tomcat.jdbc.pool.DataSource,Druid是Java语言中最好的数据库连接池,并且能够提供 ...
- SpringBoot系列之集成logback实现日志打印(篇二)
SpringBoot系列之集成logback实现日志打印(篇二) 基于上篇博客SpringBoot系列之集成logback实现日志打印(篇一)之后,再写一篇博客进行补充 logback是一款开源的日志 ...
- springboot和mybatis集成
springboot和mybatis集成 pom <?xml version="1.0" encoding="UTF-8"?> <proje ...
- SSH集成log4j日志环境[转]
第一步:在web.xml初始化log4j <context-param> <param-name>log4jConfigLocation</param-name> ...
- SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL
1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...
- Springboot+MyBatis+JPA集成
1.前言 Springboot最近可谓是非常的火,本人也在项目中尝到了甜头.之前一直使用Springboot+JPA,用了一段时间发现JPA不是太灵活,也有可能是我不精通JPA,总之为了多学学Sp ...
- DEMO: springboot 与 freemarker 集成
直接在 DEMO: springboot 与 mybatis 集成 基础上,进行修改. 1.pom.xml 中引用 依赖 <dependency> <groupId>org.s ...
随机推荐
- 浅谈对Jquery+JSON+WebService的使用小结
https://www.jb51.net/article/36207.htm 更新时间:2013年04月28日 12:19:55 作者: 我要评论 本篇文章介绍了对Jquery+JSO ...
- Bugku-CTF加密篇之进制转换(二进制、八进制、十进制、十六进制,你能分的清吗?)
进制转换 二进制.八进制.十进制.十六进制,你能分的清吗?
- c++中sort函数调用报错Expression : invalid operator <的内部原理
当我们调用sort函数进行排序时,中的比较函数如果写成如下 bool cmp(const int &a, const int &b) { if(a!=b) return a<b; ...
- iOS 自动化打包发布(Fastlane+ Jenkins+蒲公英)
安装 Xcode 命令行工具:xcode-select --install 安装 fastlane:sudo gem install fastlane --verbose 安装成功后查看版本:fast ...
- python连接Oracle的方式以及过程中遇到的问题
一.库连接步骤 1.下载cx_Oracle模块 下载步骤 工具 pycharm :File--->右键setting--->找到Project Interpreter -----> ...
- matlab 绘制原始信号的谐波
这里以锯齿信号为例: clear;clc; figure time = 0:1/20:1000; wave = sawtooth(time); subplot(3, 1, 1); plot(time, ...
- Centos610-Nginx-TCP代理配置
1.安装Nginx 详见<nginx>安装 2.下载nginx_tcp_proxy_module模块 下载 wget https://github.com/yaoweibin/nginx ...
- JS-常用方法合集
部分方法使用jQuery!!!//tab切换 /* * 参数tablist为触发事件id * 参数tabmain为执行切换id * 参数ev为触发事件的动作 */ function tab(tabli ...
- Dart语言学习(三)Dart数值型
一.类型 数值型有 num,int, double num a = ; a = 12.5; print(a); print(a.runtimeType); ; // b = 20.5; print( ...
- 放眼全球,关注游戏质量变化:腾讯WeTest发布《2019中国移动游戏质量白皮书》
2019是中国游戏市场,尤其是手游市场称得上是跌宕起伏的一年,同时也是各大厂商推陈出新突破过去的一年.面对竞争激烈的市场,手游厂商们不仅着眼于游戏质量的提升,更是将一众优秀的国产游戏带入到了海外市场, ...