导包
<!-- ===================log配置:Log4j2 + Slf4j =====================-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.0</version>
</dependency>
<dependency> <!-- 桥接:告诉Slf4j使用Log4j2 -->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.11.0</version>
</dependency>
<dependency><!-- 桥接:告诉commons logging使用Log4j2 -->
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-jcl</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.8.0-alpha2</version>
</dependency>
<!-- =======================-Log4j2 + Slf4j end====================== -->
这里注意版本问题 之前用了其他版本的包不对应就会报错比如log4j-slf4j-impl用了2.7的其他包用的2.11.0 这三个应该是一样的
log4j2.xml配置文件
<?xml version="1.0" encoding="utf-8"?>
<!--日志级别:TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出-->
<!--
status : 这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,会看到log4j2内部各种详细输出
monitorInterval : Log4j能够自动检测修改配置文件和重新配置本身, 设置间隔秒数。此处表示每隔300秒重读一次配置文件
-->
<Configuration status="info" monitorInterval="300">
<!--<properties>-->
<!--<property name="LOG_HOME">F:\logs</property>-->
<!--<property name="ERROR_LOG_FILE_NAME">error</property>-->
<!--</properties>-->
<Properties>
<Property name="log_path">logs</Property><!-- 这里的logs为项目根目录下的logs文件夹 -->
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
<!-- 高亮控制台输出 -->
<Property name="log_pattern_highlight">%highlight{${log_pattern}}{FATAL=Bright Red, ERROR=Magenta, WARN=Cyan, INFO=Green, DEBUG=Yellow, TRACE=Bright Blue}</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT"> <!-- 定义类型为Console的Appender -->
<PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>
</Console>
</Appenders>
<!--定义logger,只有定义了logger并引入上面的appender,appender才会生效-->
<Loggers>
<Root level="info"> <!-- 定义Root Logger -->
<AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定义的Console -->
</Root>
<!--定义名字为MainLogger的Logger,其日志级别为info,info以下级别的信息将不会输出 -->
<Logger name="MainLogger" level="info" additivity="false">
<AppenderRef ref="Console"/> <!-- Root Logger的Appender引用上面定义的Console -->
</Logger>
</Loggers>
</Configuration>
测试
mport org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class TestLog {
private static final Logger log = LoggerFactory.getLogger(TestLog.class);
public static void main(String[] args) {
System.out.println("rizhi 123456");
log.debug(" debug level:{}", "debug");
log.info(" info level:{}", "info");
log.warn(" info level:{}", "info");
log.error(" error level:{}", "error");
}
}