1. 普通应用
- 依赖
<!-- log4j2核心两个包 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.9.1</version>
</dependency>
<!-- slf4j核心API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- 用于桥接slf4j: slf4j转log4j -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.9.1</version>
</dependency>
- log4j2.xml配置
位置放在启动入口应用的classthpath路径下
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" monitorInterval="30">
<Properties>
<!-- 需要配置日志目录 -->
<Property name="baseDir">/var/log/gitee</Property>
<Property name="appName">test-log4j2</Property>
<Property name="pattern">%d %-5p [%t] [%c{1.}] %.-300m%n</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${pattern}"/>
</Console>
<RollingFile name="File" fileName="${baseDir}/${appName}/${appName}.log" filePattern="${baseDir}/${appName}/%d{yyyyMMdd}-%i.${appName}.log">
<PatternLayout pattern="${pattern}"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="2048 MB"/>
</Policies>
<DefaultRolloverStrategy max="30">
<Delete basePath="${baseDir}/${appName}" maxDepth="1">
<IfFileName glob="*/*.log"/>
<IfLastModified age="20d"/>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
</Appenders>
<Loggers>
<Root level="debug" includeLocation="false" additivity="false">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
</Loggers>
</Configuration>
- 日志打印
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class App {
private static Logger LOG = LoggerFactory.getLogger(App.class);
public static void testLog(String content){
LOG.debug("I'm debug log:{}",content);
LOG.info("I'm info log:{}",content);
LOG.warn("I'm warn log:{}",content);
LOG.error("I'm error log:{}",content);
}
}
2. web应用
- 依赖
比普通应用多引用了log4j-web包
<!-- log4j2核心两个包 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.9.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.9.1</version>
</dependency>
<!-- slf4j核心API -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- 用于桥接slf4j: slf4j转log4j -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.9.1</version>
</dependency>
<!-- log4j用于web项目 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.9.1</version>
</dependency>
- log4j2.xml配置
无变化, 略
- web.xml配置
增加Log4jServletContextListener的监听器, 并配置log4j2.xml的位置
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
- 日志打印
无变化, 略