log4j2
1、记录日志:
允许对不同日志级别的日志进行分类
对日志的输出提供控制
允许将日志记录到不同的输出目的地,如文件、控制台和数据库
可以使用配置文件在运行时设置日志记录
2、组成部分:
1、Logger:这是一个类,它帮忙记录不同日志级别的信息
2、Appenders:Appenders是对象,它帮助Logger对象将日志写入不同的输出目的地。Appenders可以指定一个文件、控制台后数据库作为输出位置。
3、Layouts:Layout类帮助我们定义如何再输出终端显示日志信息
3、api下载及管理
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.9.1</version>
</dependency>
4、配置顺序优先级
1、Log4j将检查配置文件路径的系统属性文件:Log4j.configurationFile.如果没有定义系统属性文件,则配置顺序优先级如下:
Property ConfigurationFactory将在classpath中查找log4j2-test.Properties配置文件
YAML ConfigurationFactory将在classpath中查找log4j2-test.yaml和log4j2-test.yml配置文件
JSON ConfigurationFactory将在classpath中查找log4j-test.jsn和log4j2-test.json配置文件
XML ConfigurationFactory将在classpath中查找log4j-test.xml配置文件
Property ConfigurationFactory将在classpath中查找log4j2.properities配置文件
YAML ConfigurationFactory将在classpath中查找log4j2.yml和log4j2.yaml配置文件
JSON ConfigurationFactory将在classpath中查找log4j2.jsn和log4j2.json配置文件
XML ConfigurationFactory将在classpath中查找log4j2.xml配置文件
如果没有提供任何配置文件,默认配置将会生效产生如下行为:
将使用Root Logger设为ERROR,将日志消息打印到控制台,样式采用%d{HH:mm:ss.sss}[%t]%-5level%logger{36}-%msg%n
日志级别:ALL/TRACE/DEBUG/INFO/WARN/ERROR/FATAL
5、定义log4j2.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration PUBLIC "-//log4j/log4j Configuration//EN" "log4j.dtd"> <log4j:configuration> <!--输出到控制台--> <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> <param name="Threshold" value="DEBUG"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </layout> </appender> <!--输出到文件(info)--> <!--将生成“info.log.2014-06-11”这样的日志文件--> <appender name="fileAppenderInfo" class="org.apache.log4j.DailyRollingFileAppender"> <!--<param name="File" value="${user.home}/logs/website/info.log" />--> <param name="File" value="default1.log"/> <param name="DatePattern" value=".yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!--输出到文件(warn)--> <appender name="fileAppenderWarn" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${user.home}/logs/website/warn.log" /> <param name="DatePattern" value=".yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="WARN" /> <param name="LevelMax" value="WARN" /> </filter> </appender> <!--输出到文件(error)--> <appender name="fileAppenderError" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${user.home}/logs/website/error.log" /> <param name="DatePattern" value=".yyyy-MM-dd" /> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!--屏蔽所有org.springframework.*输出的Debug(及以下)信息--> <logger name="log4jtutorial.LoggingDemo"> <level value="INFO"></level> </logger> <root> <level value="ALL"/> <appender-ref ref="consoleAppender" /> <appender-ref ref="fileAppenderInfo" /> <appender-ref ref="fileAppenderWarn" /> <appender-ref ref="fileAppenderError" /> </root> </log4j:configuration>
6、定义log4j.properties
log4j.rootLogger=INFO,R,stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=default.log log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%d-[TS] %p %t %c - %m%n log4j.logger.java.sql.Connection=INFO log4j.logger.java.sql.Statement=INFO log4j.logger.java.sql.PreparedStatement=INFO log4j.logger.java.sql.ResultSet=INFO