原文:https://blog.youkuaiyun.com/cs3235301/article/details/82866373
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<!-- 控制台打印日志 -->
<Console name="consolePrint" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- 将日志输出到指定文件 fileName属性值为日志文件地址-->
<File name="LogFile" fileName="D:\file.log" append="false">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
</File>
<File name="SqlLogFile" fileName="D:\mybatis.log" append="false">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n" />
</File>
</Appenders>
<Loggers>
<Root level="info">
<AppenderRef ref="consolePrint" />
</Root>
PS:配置多个logger可以指定不同类或包下打印的日志输出到不同的文件里,name属性值设置为指定的类或包,additivity设置为"false"将只作用于当前appender-ref,即sql不会打印在root指定的appender(控制台)里,只会单独打印在指定的日志文件(mybatis.log)中
<!-- 配置mybatis打印sql 指定mapper所在包的全路径 -->
<logger name="com.domain.mapper" level="DEBUG" additivity="false">
<appender-ref ref="SqlLogFile" />
</logger>
<!-- 将com.test包下的Test类中的级别不小于INFO的日志既打印到root指定的appender(控制台)中又单独打印到指定的日志文件(file.log)中 -->
<logger name="com.test.Test" level="INFO" additivity="true">
<appender-ref ref="LogFile" />
</logger>
</Loggers>
</Configuration>
package com.test;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test {
private Logger logger = LogManager.getLogger(Test.class);
public void test() {
logger.info("我将被打印到file.log中");
}
}