所有代码都在前几期里有https://blog.csdn.net/qq_28655127
这次的内容是 StringBoot整合log4j2,日志配置
log4j2的官网地址
log4j2的API
log4j2的简介
Log4j使用如下图所示的类。
使用Log4j 2 API的应用程序将请求日志管理器中带有特定名称的日志记录器。LogManager将定位适当的日志上下文,然后从它获得日志记录器。这使得新的Log4j 2.0版本有了大幅的性能提升、新的插件系统,以及配置设置方面的很多改善。Log4j 1.x 在高并发情况下出现死锁导致cpu使用率异常飙升,而Log4j2.0基于LMAX Disruptor的异步日志在多线程环境下性能会远远优于Log4j 1.x和logback。
开始
1.目录结构
2.添加pom依赖
<!-- log4j日志 -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.21</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.21</version>
</dependency>
3.新建log4j.properties配置文件
### 设置###
log4j.rootLogger = debug,CONSOLE,D,I,E
#log4j.rootLogger = info,I,E
### 输出信息到控制抬 ###
#log4j.appender.stdout = org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target = System.out
#log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
##log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
#log4j.appender.stdout.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %p %C.%M(%L) : %m%n
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=DEBUG
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss} -%-4r %-5p %x - %m%n
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Encoding=UTF-8
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
### 输出DEBUG 级别以上的日志到 ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File =../logs/bootmy/debug/debug
log4j.appender.D.DatePattern=yyyy-MM-dd'.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} %p %C.%M(%L) : %m%n
### 输出DEBUG 级别以上的日志###
log4j.appender.I = org.apache.log4j.DailyRollingFileAppender
log4j.appender.I.File =../logs/bootmy/info/info
log4j.appender.I.DatePattern=yyyy-MM-dd'.log'
log4j.appender.I.Append = true
log4j.appender.I.Threshold = INFO
log4j.appender.I.layout = org.apache.log4j.PatternLayout
log4j.appender.I.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %p %C.%M(%L) : %m%n
### 输出ERROR 级别以上的日志 ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =../logs/bootmy/error/error
log4j.appender.E.DatePattern=yyyy-MM-dd'.log'
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %p %C.%M(%L) : %m%n
### 排除第三方包日志 ###
log4j.logger.org.apache=FATAL
log4j.logger.org.hibernate=FATAL
log4j.logger.org.springframework=FATAL
log4j.logger.org.displaytag=FATAL
log4j.logger.org.hibernate.SQL=FATAL
log4j.logger.org.hibernate.engine.QueryParameters=FATAL
log4j.logger.org.hibernate.engine.query=FATAL
log4j.logger.org.hibernate.type=FATAL
log4j.logger.org.mortbay=FATAL
log4j.logger.org.dbunit=FATAL
### #打印sql语句 ###
log4j.logger.com.ibatis=debug
log4j.logger.java.sql=debug
log4j.logger.mapper: DEBUG
4.application.properties文件中加入logging.level.“mapper所对应的目录” = debug
配置日志打印SQL代码
例
#日志显示SQL
logging.level.com.bootmy.mapper = debug
5.Controller方法中调用日志方法
加 private static final Logger log = Logger.getLogger(LoginController.class);
引用*import org.apache.log4j.Logger;*包
部分代码
@RequestMapping("/Login")
@Controller
public class LoginController {
private static final Logger log = Logger.getLogger(LoginController.class);
@Resource
public DictMapper dictMapper;
@Resource
DictService dictService;
/**
* 直接使用Mapper
* @return
*/
@RequestMapping(value = "/index", produces = "text/html")
public String routerListView() {
try {
Dict dict = dictMapper.selectByPrimaryKey(Long.valueOf(1));
System.out.println(dict.getId());
log.info("/Login/index方法 -- LoginController ------- id="+dict.getId());
List<Dict> list = new ArrayList<>();
list.get(2).getId();//异常
} catch (Exception e) {
log.error("异常具体信息"+e.getMessage(), e);
}
return "index";
}
}
6.启动项目访问http://127.0.0.1:8079/Login/index方法
控制台打印内容为:
7.查看日志文件
在配置目录下生成对应的文件目录
对应的日志内容