maven依赖
<!-- log4j -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-web -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.10.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.lmax/disruptor -->
<dependency>
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.4.1</version>
</dependency>
Log4j2.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<Properties>
<property name="log_pattern">[%p][%d{yyyy-MM-dd HH:mm}] (%F:%L)[%c]\n%m%n================================================================================================\n\n
</property>
<property name="log_address">/你的文件夹名/src/main/resources/logs</property>
</Properties>
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="${log_pattern}"/>
</Console>
<RollingRandomAccessFile name="infoLog"
fileName="${log_address}/info.log"
filePattern="${log_address}/%d{yyyy-MM-dd}/info-%d{yyyy-MM-dd HH-mm}-%i.log">
<Filters>
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout
pattern="${log_pattern}" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingRandomAccessFile>
<RollingRandomAccessFile name="debugLog"
fileName="${log_address}/debug.log"
filePattern="${log_address}/%d{yyyy-MM-dd}/debug-%d{yyyy-MM-dd HH-mm}-%i.log"
append = "false">
<Filters>
<ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout
pattern="${log_pattern}" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingRandomAccessFile>
<RollingRandomAccessFile name="errorLog"
fileName="${log_address}/error.log"
filePattern="${log_address}/%d{yyyy-MM-dd}/error-%d{yyyy-MM-dd HH-mm}-%i.log">
<Filters>
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
</Filters>
<PatternLayout
pattern="${log_pattern}" />
<Policies>
<TimeBasedTriggeringPolicy interval="1" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<DefaultRolloverStrategy max="20" />
</RollingRandomAccessFile>
</appenders>
<loggers>
<Logger name="com.smbms.dao" level="debug" additivity="false">
<AppenderRef ref="debugLog"/>
<AppenderRef ref="infoLog"/>
<AppenderRef ref="errorLog"/>
</Logger>
<Logger name="com.smbms.servlet" level="info" additivity="false">
</Logger>
<Root level="trace">
<AppenderRef ref="infoLog"/>
<AppenderRef ref="errorLog"/>
</Root>
</loggers>
</configuration>
在Mybatis的settings中配置
<setting name="logImpl" value="LOG4J2"/>
在web.xml中配置,不配置不能只能在控制台输出(我的就是)
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
<filter>
<filter-name>log4jServletFilter</filter-name>
<filter-class>org.apache.logging.log4j.web.Log4jServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>log4jServletFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>