这里的log4j2,是log4j 的升级版本。
apache log4j 官网也进行了解释,log4j 开始弃用,推荐使用 log4j2 。
----------------------分隔符-----------
下面的三个网站,有必要去细看一小时,因为真的很重要。
slf4j 下载地址:https://www.slf4j.org/download.html
log4j2 下载地址:http://logging.apache.org/log4j/2.x/index.html
Log4j to SLF4J Adapter: http://logging.apache.org/log4j/2.x/log4j-to-slf4j/index.html
使用步骤详解!
第一步:pom.xml
这里的依赖,分四块,slf4j-api log4j - slf4j -impl log4j- XX lombok
slf4j - API是一种服务一种API接口,log4j - slf4j - impl 进行实现关联,log4j-XX 是具体的日志实现类,lombak做注解用的。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.11.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version>
<scope>provided</scope>
</dependency>
第二步:log4j2.xml 配置文件。
两个重要的参考来源
http://logging.apache.org/log4j/2.x/articles.html
https://howtodoinjava.com/log4j2/log4j-2-xml-configuration-example/
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<!-- Logging Properties -->
<Properties>
<Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS Z} %p %l %msg %n</Property>
<Property name="APP_LOG_ROOT">c:/temp</Property>
</Properties>
<Appenders>
<!-- Console Appender -->
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${LOG_PATTERN}"/>
</Console>
<!-- File Appenders on need basis -->
<RollingFile name="frameworkLog" fileName="${APP_LOG_ROOT}/app-framework.log"
filePattern="${APP_LOG_ROOT}/app-framework-%d{yyyy-MM-dd}-%i.log">
<LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<RollingFile name="debugLog" fileName="${APP_LOG_ROOT}/app-debug.log"
filePattern="${APP_LOG_ROOT}/app-debug-%d{yyyy-MM-dd}-%i.log">
<LevelRangeFilter minLevel="DEBUG" maxLevel="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<RollingFile name="infoLog" fileName="${APP_LOG_ROOT}/app-info.log"
filePattern="${APP_LOG_ROOT}/app-info-%d{yyyy-MM-dd}-%i.log" >
<LevelRangeFilter minLevel="INFO" maxLevel="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<RollingFile name="errorLog" fileName="${APP_LOG_ROOT}/app-error.log"
filePattern="${APP_LOG_ROOT}/app-error-%d{yyyy-MM-dd}-%i.log" >
<LevelRangeFilter minLevel="ERROR" maxLevel="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="10"/>
</RollingFile>
<RollingFile name="perfLog" fileName="${APP_LOG_ROOT}/app-perf.log"
filePattern="${APP_LOG_ROOT}/app-perf-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="1"/>
</RollingFile>
<RollingFile name="traceLog" fileName="${APP_LOG_ROOT}/app-trace.log"
filePattern="${APP_LOG_ROOT}/app-trace-%d{yyyy-MM-dd}-%i.log" >
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="19500KB" />
</Policies>
<DefaultRolloverStrategy max="1"/>
</RollingFile>
</Appenders>
<Loggers>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core" level="info">
</logger>
<logger name="org.springframework.beans" level="info">
</logger>
<logger name="org.springframework.context" level="info">
</logger>
<logger name="org.springframework.web" level="info">
</logger>
<Logger name="com.evhtech" additivity="false" level="trace">
<AppenderRef ref="traceLog" />
<AppenderRef ref="Console" />
</Logger>
<Logger name="com.evhtech" additivity="false" level="debug">
<AppenderRef ref="debugLog" />
<AppenderRef ref="infoLog" />
<AppenderRef ref="errorLog" />
<AppenderRef ref="Console" />
</Logger>
<Logger name="com.evhtech" additivity="false" level="info">
<AppenderRef ref="perfLog" />
<AppenderRef ref="Console"/>
</Logger>
<Root level="warn">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
第三步:创建将使用slf4j的类。
在编写这些类时,@Slf4j 注解, 如果不能用。记得需要安装lombok插件。
按 Ctrl + Alt + S 键,在弹出的窗口
一个类
package com.evhtech.dao;
package com.evhtech.dao;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Dao {
public static void main(String[] args) {
log.trace("Dao log --->TRACE");
log.debug("Dao log --->EBUG");
log.info("Dao log --->INFO");
log.warn("Dao log --->WARN");
log.error("Dao log --->ERROR");
}
}
二个类
package com.evhtech.test;
package com.evhtech.test;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class Test {
public static void main(String[] args) {
log.trace("Test log --->TRACE");
log.debug("Test log --->EBUG");
log.info("Test log --->INFO");
log.warn("Test log --->WARN");
log.error("Test log --->ERROR");
}
}
第四步:console日志输出。
新建的二个类。都是用来测试的。是main函数,分析 run 就可以。
第五步:生成的日志文件。