第一步:导入Maven依赖
org.apache.logging.log4j
log4j-slf4j-impl
2.17.2
第二步:在类路径下添加log4j2.xml配置文件
log4j2Logs
%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %l - %m%n
%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %C.%M - %m%n
20MB
DEBUG
${basePath}/all.log
${basePath}/%d{yyyy-MM}/all-%d{yyyy-MM-dd}-%i.log.gz
50
${basePath}/info.log
${basePath}/%d{yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz
10
${basePath}/warn.log
${basePath}/%d{yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz
10
${basePath}/error.log
${basePath}/%d{yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz
10
DEBUG
第三步:测试代码
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class DemoTest {
private static Logger logger = LogManager.getLogger(DemoTest.class.getName());
public static void main(String[] args) {
logger.info("Info");
logger.debug("Debug");
try {
System.out.println(3 / 0);
} catch (Exception e) {
logger.error("Error");
logger.fatal("Fatal");
}
}
}
程序运行结果: 同时在当前项目的路径下生成目录log:
- 添加Lombok依赖
org.projectlombok
lombok
1.18.20
- 测试代码
@Slf4j
public class DemoTest {
public static void main(String[] args) {
log.info("Info");
log.debug("Debug");
try {
System.out.println(3 / 0);
} catch (Exception e) {
log.error("Error");
}
log.info("你好{}---今天日期是{}", "张三", LocalDate.now());
}
}
结果:
-
log4j的配置文件是log4j.properties,而log4j2的配置文件变成了log4j2.xml
-
log4j的只需引入一个jar包 log4j.1.x.xx.jar, 而log4j2则需要两个 log4j.core.xxx.jar和log4j.api.xxx.jar
-
调用方式不一致:
-
log4j:
import org.apache.log4j.Logger; private final Logger LOGGER = Logger.getLogger(Test.class.getName());
-
log4j2:
import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; private static Logger logger = LogManager.getLogger(Test.class.getName());
-
-
文件渲染: log4j想要生效,我们需要在web.xml中进行配置,而log4j2则不需要,只需要配置好log4j2.xml即可
org.springframework.web.util.Log4jConfigListener log4jConfigLocation classpath:config/log4j.properties log4jRefreshInterval 60000