Skip to content

二十三、日志

一、概述

  1. 可以记录程序运行过程中的信息,并可以永久存储
  2. 可以将系统执行的信息选择性的记录到指定的位置(控制台、文件中、数据库中)
  3. 可以随时以开关的形式控制是否记录日志,无需修改源代码

二、基础体系

1、规范

日志规范大多是一些接口,提供给实现框架去设计的

常见的规范:

  • Commons Logging
  • Simple Logging Facade for Java

2、实现框架

常见的实现框架:

  • Log4J
  • Logback

三、Logback日志框架

logback官网:https://logback.qos.ch/index.html

logback下载页面链接:https://repo1.maven.org/maven2/ch/qos/logback/

slf4j官网:https://www.slf4j.org/

slf4j下载页面链接:https://repo1.maven.org/maven2/org/slf4j/


已经下好视频同款:https://www.123pan.com/s/QvTuVv-zqVw.html

1、技术模块

  • logback-core:该模块为其他两个模块提供基础代码,必须有
  • logback-classic:完整实现了slf4j API的模块
  • logback-access模块与TomcatJettyServlet容器集成,以提供HTTP访问日志功能

2、快速入门

需求:导入Logback日志技术到项目中,用于记录系统的日志信息

  1. 项目下新建文件夹lib,导入Logback的相关jar包到该文件夹下,并添加到项目依赖库中去

  2. 将Logback的核心配置文件logback.xml直接拷贝到src目录下(必须是src下)

    xml
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!-- CONSOLE :表示当前的日志信息是可以输出到控制台的 -->
        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <!--输出流对象 默认 System.out 改为 System.err  其中err:控制台输出日志为红色,而out为黑色-->
            <target>System.out</target>
            <encoder>
                <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%n</pattern>
            </encoder>
        </appender>
     
        <!-- File:表示当前的日志信息是可以输出到文件的 -->
        <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <encoder>
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
                <charset>utf-8</charset>
            </encoder>
            <!--日志输出路径(output.log是文档名,下方还有一处文件名(不用写.log))-->
            <file>D:/output.log</file>
            <!--指定日志文件拆分和压缩规则(防止文件过大)-->
            <rollingPolicy
                    class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                <!--通过指定压缩文件名称,来确定分割文件方式-->
                <fileNamePattern>D:/output-%d{yyyy-MMdd}.log%i.gz</fileNamePattern>
                <maxFileSize>1MB</maxFileSize> <!--文件拆分大小-->
            </rollingPolicy>
        </appender>
     
        <!--
        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF (关掉), 默认debug(可忽略大小写)
        <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
        -->
        <root level="INFO"> <!--打印规则:只打印不低于当前级别的日志-->
            <appender-ref ref="CONSOLE"/> <!--如果这个地方不配置关联打印的位置,改位置将不会记录日志-->
            <appender-ref ref="FILE"/>
        </root>
    </configuration>
  3. 在代码里获取日志的对象

    java
    public static final Logger LOGGER = loggerFactory.getLogger("类对象");
  4. 使用日志对象的方法记录系统的日志信息

3、日志级别

  • 级别程度依次是:trace<debug<info<warn<error
  • 默认等级是debug(忽略大小写)
  • 作用:用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息
  • ALLOFF分别是打开全部日志信息,及关闭全部日志信息