首先,在maven项目中导入jar包
<!-- slf4j -->
<slf4j.version>1.7.21</slf4j.version>
<!-- log4j2 -->
<log4j2.version>2.6.2</log4j2.version>
<!-- log4j2 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j2.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j2.version}</version>
</dependency>
<!--web工程需要包含log4j-web,非web工程不需要 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>${log4j2.version}</version>
</dependency>
<!--用于与slf4j保持桥接 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j2.version}</version>
</dependency>
<!-- slf4j -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
在src/main/resources下新建一个log4j2.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off">
<properties>
<!--日志文件相对路径-->
<property name="LOG_HOME">logs</property>
<!--日志文件名-->
<property name="FILE_NAME">cloud</property>
<property name="TEMP_FILE_NAME">cloud_Temp</property>
</properties>
<Appenders>
<!-- 控制台 -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} %-5level %class{36} %L %M - %msg%xEx%n"/>
</Console>
<!-- 打出所有日志,临时log,程序运行会自动覆盖 -->
<File name="Log" fileName="${web:rootDir}/${LOG_HOME}/${TEMP_FILE_NAME}.log" append="false">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>
</File>
<!-- 打出所有日志 ${web:rootDir}/-->
<RollingRandomAccessFile name="RollingFile"
fileName="${web:rootDir}/${LOG_HOME}/${FILE_NAME}.log"
filePattern="${web:rootDir}/${LOG_HOME}/$${date:yyyy-MM}/${FILE_NAME}_%d{yyyy-MM-dd}_%i.log.gz">
<PatternLayout
pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} %level [%thread][%file:%line] - %msg%n" />
<Policies>
<TimeBasedTriggeringPolicy />
<!-- 当单个日志文件超过10MB时,自动新建另一个文件记录日志 -->
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
<!-- 最多保存多少个日志文件 -->
<DefaultRolloverStrategy max="200" />
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="com.xu.dao" level="trace" />
<Root level="info">
<!-- 将日志输出至文件(部署状态下开启) -->
<AppenderRef ref="RollingFile" />
<!-- 将日志输出至控制台(调试状态下开启) -->
<AppenderRef ref="Console"/>
<!-- 临时日志 可注释掉 -->
<AppenderRef ref="Log"/>
</Root>
</Loggers>
</Configuration>
因为配置了
<Logger name="com.xu.dao" level="trace" />
这句话,所以com.xu.dao下的sql语句查询也作为日志输出
在java类中使用日志打印
private static final Logger logger = LoggerFactory.getLogger(FFmpegUtil.class);
logger.info("开始执行转码");