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