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
原文:https://www.cnblogs.com/wangkc/p/10837925.html