目录:
1、 引入jar包使用
2、 使用
3、 配置文件
4、 配置
5、 说明
说明:2015年9月,Apache软件基金业宣布,Log4j不在维护,建议所有相关项目升级到Log4j2。
1.引入jar包使用
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
根据maven的提示,最新的引入方式:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
</dependency>
SpringBoot引入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j</artifactId>
<version>1.3.8.RELEASE</version>
</dependency>
需要排除boot自带的logging,改为:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
2.使用
//使用log4j
import org.apache.log4j.Logger;
private static final Logger logger = Logger.getLogger(XX.class);
logger.error(e.getMessage());
自动加载配置文件:log4j启动时,默认会寻找source目录下的log4j.xml,要是找不到会继续找log4j.properties文件。
手动加载配置文件:代码里面读取配置文件存放的目录。
3.配置文件格式
log4j常用的配置文件有两种:
log4j.xml
log4j.properties
这里介绍的是基于log4j.properties。log4j.xml的优先级高于log4j.properties,两者都有的情况下使用log4j.xml。
log4j.properties配置简单,不支持复杂过滤器。
log4j.xml支持复杂过滤器和Log4j的新特性。
4.配置内容
Log4j由三个重要的组成构成:日志记录器(Loggers),输出端(Appenders)和日志格式化器(Layout)。
日志记录器(Loggers):控制要输出哪些日志记录语句,对日志信息进行级别限制。
输出端(Appenders):指定了日志将打印到控制台还是文件中。
日志格式化器(Layout):控制日志信息的显示格式。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
log4j配置文件中的key的单词首字母都使用小写。
##配置根Logger,建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
log4j.rootLogger=Error,Console,DailyRollingFile
##console 控制台输出
log4j.appender.Console=org.apache.log4j.ConsoleAppender
##输出的方式,非必填,可选System.out或System.err
log4j.appender.Console.Target=System.out
log4j.appender.Console.ImmediateFlush=true
##输出日志的级别 不填则认为是ALL级别
log4j.appender.Console.Threshold=Error
##输出日志的格式(布局)实现类
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
##输出日志的具体格式
log4j.appender.Console.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss.SSS} -[%-t] %-5p %-4c %x -%m%n
##按天滚动生成日志文件
log4j.appender.LogFile=org.apache.log4j.DailyRollingFileAppender
##输出文件的路径
log4j.appender.LogFile.File=/logs/manager.log
log4j.appender.LogFile.Append=true
log4j.appender.LogFile.ImmediateFlush=true
##输出日志的级别 不填则理解为ALL级别
log4j.appender.LogFile.Threshold=Error
log4j.appender.LogFile.Encoding=UTF-8
##输出日志的格式(布局)实现类
log4j.appender.LogFile.layout=org.apache.log4j.PatternLayout
##输出日志的具体格式
log4j.appender.LogFile.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss.SSS} -[%-t] %-5p %-4c %x -%m%n
5.说明
Log4J是比较早的,后面有很多新的日志框架出现,推荐Log4j2。建议使用日志门面引入日志组件的方式来实现系统日志的记录,这样可以将系统和日志框架解耦。
SLF4J是日志门面(还有JCL),slf4j是门面模式的典型应用,而Log4J、Log4J2和LogBack是日志实现框架,一般用以下几种方式实现:
slf4j + logback
slf4j + log4j
slf4j + jul(Java原生日志框架)
只用slf4j无日志实现