Log4j 的组件和配置文件介绍
https://www.bilibili.com/video/BV1iJ411H74S?p=12
Log4j 组件
Log4j 主要由 Loggers(日志记录器)、Appenders(输出端)和 Layout(日志格式化器)组成。
其中 Loggers 控制日志的输出级别与日志是否输出;
Appenders 指定日志的输出方式(输出到控制台、文件等);
Layout 控制日志信息的输出格式
Loggers
日志记录器,负责收集处理日志记录,实例的命名就是类“XX”的 full quailied name(类的全限定名),
Logger 的名字大小写敏感,其命名有继承机制:
例如:name 为 org.apache.commons 的 logger 会继承 name 为 org.apache 的 logger
Log4j 中有一个特殊的 logger 叫做“root”,它是所有 logger 的根,也就意味着其他所有的 logger 都会直接或者间接地继承 root。
root logger 可以用 Logger.getRootLogger() 方法获取
但是,自 log4j 1.2 版本以来,Logger 类已经取代了 Category 类。对于熟悉早期版本的 log4j 的人来说,Logger 类可以被视为 Category 类的别名
Appenders
Appender 用来指定日志输出到哪个地方,可以同时指定日志的输出目的地。
Log4j 常用的输出目的地有以下几种:
输出端类型 | 作用 |
---|---|
ConsoleAppender | 将日志输出到控制台 |
FileAppender | 将日志输出到文件中 |
DailyRollingFileAppender | 将日志输出到一个日志文件,并且每天输出到一个新的文件 |
RollingFileAppender | 将日志信息输出到一个日志文件,并且指定文件的大小,当文件大小达到指定大小时,会自动把文件改名,同时产生一个新的文件 |
JDBCAppender | 将日志信息保存到数据库中 |
Layouts
布局器 Layouts 用于控制日志输出内容的格式,让我们可以使用各种需要的格式输出日志。
Log4j 常用的 Layouts:
格式化器类型 | 作用 |
---|---|
HTMLLayout | 格式化日志输出为 HTML 表格形式 |
SimpleLayout | 简单的日志输出格式化,打印的日志格式为(info - message) |
PatternLayout | 最强大的格式化器,可以根据自定义格式输出日志,如果没有指定转换格式,
就使用默认的转换格式 |
使用配置文件
log4j.properties
log4j.rootLogger = trace,console
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.SimpleLayout
log4j.rootLogger = trace,console
指定 rootLogger 的日志级别是 trace,并且使用 name 为 console 的 Appender;
log4j.appender.console = org.apache.log4j.ConsoleAppender
声明了一个 name 为 console 的 org.apache.log4j.ConsoleAppender
log4j.appender.console.layout = org.apache.log4j.SimpleLayout
为 name 为 console 指定了布局为 org.apache.log4j.SimpleLayout
Log4jTest.java
import org.apache.log4j.Logger;
import org.junit.Test;
public class Log4jTest {
// 快速入门
@Test
public void testQuick() {
// 初始化配置信息,在入门案例中暂不使用配置文件
// BasicConfigurator.configure();
// 获取日志记录器对象
Logger logger = Logger.getLogger(Log4jTest.class);
// 日志记录输出
logger.info("hello log4j");
// 日志级别
logger.fatal("fatal"); // 严重错误,一般会造成系统崩溃并终止运行
logger.error("error"); // 错误信息,不会影响系统运行
logger.warn("warn"); // 警告信息,可能会发生问题
logger.info("info"); // 运行信息,数据连接、网络连接、IO 操作等等
logger.debug("debug"); // 调试信息,一般在开发中使用,记录程序变量参数传递信息等等
logger.debug("trace"); // 追踪信息,记录程序所有的流程信息
}
}
INFO - hello log4j
FATAL - fatal
ERROR - error
WARN - warn
INFO - info
DEBUG - debug
DEBUG - trace