1、xml文件配置
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<properties>
<!-- 文件输出格式 -->
<property name="PATTERN">%d{yyyy-MM-dd HH:mm:ss.SSS} |-%-5level [%thread] %c [%L][%M] -| %msg%xEx%n</property>
</properties>
<appenders>
<!-- 输出控制台的配置 -->
<Console name="CONSOLE" target="system_out">
<!-- 控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch) -->
<ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出日志的格式 -->
<PatternLayout pattern="${PATTERN}" />
</Console>
<File name="log" fileName="logs/app.log" append="false">
<PatternLayout pattern="${PATTERN}" />
</File>
<File name="ERROR" fileName="logs/error.log" append="false">
<!-- 添加过滤器ThresholdFilter,可以有选择的输出某个级别以上的类别 onMatch="ACCEPT" onMismatch="DENY"意思是匹配就接受,否则直接拒绝 -->
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<!-- 输出日志的格式 -->
<PatternLayout pattern="${PATTERN}" />
</File>
<!-- 这个会打印出所有的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档 -->
<RollingFile name="RollingFile" fileName="logs/app.log"
filePattern="logs/$${date:yyyy-MM}/app-%d{yyyy-MM-dd}-%i.log.gz">
<PatternLayout pattern="${PATTERN}" />
<SizeBasedTriggeringPolicy size="100MB" />
</RollingFile>
</appenders>
<loggers>
<root level="info">
<appender-ref ref="RollingFile" />
<appender-ref ref="CONSOLE" />
<appender-ref ref="ERROR" />
<appender-ref ref="log" />
</root>
</loggers>
</configuration>
2、配置说明
Appender
Appender:日志输出器,配置日志的输出级别、输出位置等,包括以下几类:
- ConsoleAppender: 日志输出到控制台;
- FileAppender:输出到文件;
- RollingFileAppender:输出到文件,文件达到一定阈值时,自动备份日志文件;
- DailyRollingFileAppender:可定期备份日志文件,默认一天一个文件,也可设置为每分钟一个、每小时一个;
- WriterAppender:可自定义日志输出位置。
日志级别
- 一般日志级别包括:ALL,DEBUG, INFO, WARN, ERROR,FATAL,OFF
- Log4J推荐使用:DEBUG, INFO, WARN, ERROR
输出格式
Log4J最常用的日志输出格式为:org.apache.log4j.PatternLayOut,其主要参数为:
- %n - 换行
- %m - 日志内容
- %p - 日志级别(FATAL, ERROR,WARN, INFO,DEBUG or custom)
- %r - 程序启动到现在的毫秒数
- %t - 当前线程名
- %d - 日期和时间, 一般使用格式 %d{yyyy-MM-dd HH:mm:ss, SSS}
- %l - 输出日志事件的发生位置, 同 %F%L%C%M
- %F - java 源文件名
- %L - java 源码行数
- %C - java 类名,%C{1} 输出最后一个元素
- %M - java 方法名
3、输出台打印结果