简单说明一下Spring Boot工程中添加log4J的过程
(1)引入依赖
如下图是log4j的依赖引用,在我们创建Spring Boot工程的时候,在引入的Spring-boot-starter中包含了Spring-boot-starter-logging,Spring-boot-starter-logging是Spring Boot 工程默认的日志框架Logback,所以在我们引入log4j之前,需要先排除该包的依赖,再引入log4j的依赖。
(2)添加log4j配置文件
在引入log4j依赖之后,只需要在src/main/resources 目录下加入 log4j2-spring.xml的配置文件,配置信息如下图:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Properties>
<Property name="logLocation">logs/</Property>
<Property name="logName">springboot</Property>
<Property name="commonPattern">[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n</Property>
</Properties>
<Appenders>
<Console name="STDOUT">
<PatternLayout pattern="${commonPattern}"/>
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
</Console>
<RollingFile name="LOGFILE" fileName="${logLocation}/${logName}.log"
filePattern="${logLocation}/${logName}-%d{yyyy-MM-dd}.log">
<PatternLayout pattern="${commonPattern}"/>
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</RollingFile>
</Appenders>
<Loggers>
<Root level="TRACE">
<AppenderRef ref="STDOUT"/>
<AppenderRef ref="LOGFILE"/>
</Root>
</Loggers>
</Configuration>
简单介绍一下配置文件的信息:
首先介绍loggers标签,用于定义logger的lever和所采用的appender,其中appender-ref必须为先前定义的appenders的名称,例如,如果level为Console,那么log就会以appender所定义的输出格式来输出log。
root标签为log的默认输出形式,如果一个类的log没有在loggers中明确指定其输出lever与格式,那么就会采用root中定义的格式。
简单介绍几个其中常用的扩展组件
1,ConsoleAppender
输出结果到System.out或是System.err。
2,FileAppender
输出结果到指定文件,同时可以指定输出数据的格式。append=“false”指定不追加到文件末尾
3,RollingFileAppender
自动追加日志信息到文件中,直至文件达到预定的大小,然后自动重新生成另外一个文件来记录之后的日志。
(3)在application.properties中声明log4j的配置文件的位置
(4)添加log4j的辅助类:
package org.wxshan.springboot.utils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* Created by Administrator on 2017/9/6 0006.
*
* Logger 日志记录辅助类
*/
public class log {
private static final Logger LOGGER = LogManager.getLogger();
private log(){
throw new UnsupportedOperationException("cannot be instantiated");
}
public static Logger getLogger(){
return LOGGER;
}
public static void trace(String msg){
LOGGER.trace(msg);
}
public static void debug(String msg){
LOGGER.debug(msg);
}
public static void info(String msg){
LOGGER.info(msg);
}
public static void warn(String msg){
LOGGER.warn(msg);
}
public static void error(String msg){
LOGGER.error(msg);
}
}
测试log4j
在控制台输出结果如下图:
项目中log文件目录:
上图可以看到对项目工程的日志采取每天一个文件的保存,方便日志的管理。