• 20天深度复习JavaSE的详细笔记(十五)——日志框架


    Demo15-日志框架

    1.日志技术的概述

    我们以前记录日志是通过输出语句完成的,有很多弊端:

    • 信息只能展示在控制台
    • 不能记录到其他的位置(文件,数据库)
    • 想取消记录的信息需要修改代码才可以完成
      • 业务上线后为了不影响性能我们要取消这些输出语句,要一个一个找,维护成本非常高!

    日志技术具备的优势

    • 可以将系统执行的信息选择性的记录到指定的位置(控制台,文件中,数据库中)
    • 可以随时以开关的形式控制是否记录日志,无需修改源代码
    输出语句日志技术
    输出位置只能是控制台可以将日志信息写入到文件或数据库中
    取消日志需要修改代码,灵活性较差不需要修改代码,灵活性较好
    多线程性能较差性能较好

    细说一下性能区别:

    • 输出语句是和项目一起跑的,那么就会影响性能
    • 如果使用日志,业务跑自己的,有一个单独的线程跑日志,两个各跑各个,所以性能较好

    2.日志技术体系

    在这里插入图片描述

    日志规范就相当于接口,日志实现框架就相当于接口的实现类

    3.Logback日志框架

    3.1Logback概述

    • Logback是有log4j创始人设计的另一个开源日志组件,性能比log4j要好
    • 官方网站:https://logback.qos.ch/index.html
    • Logback是基于slf4j的日志规范实现的框架
    • Logback主要分为三个技术模块
      • logback-core:该模块为其他两个模块奠定了基础,必须有
      • logback-classic:核心模块,它是log4j的一个改良版本,同时它完整实现了slf4j API
      • logback-access:该模块与Tomcat和Jetty等容器集成,以提供HTTP访问日志功能

    3.2Logback快速入门

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

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

    在这里插入图片描述
    在这里插入图片描述

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

    • 在代码中获取日志的对象

      public static final Logger LOGGER = LoggerFactory.getLogger("类对象");
      
      • 1
    • 使用日志对象LOGGER调用其方法输出日志信息

    public class Test {
        //1.日志对象一个就够了,所以用static,并且不想让日志对象被修改,所以用final
        //2.Test.class是日志对象的名字,写成Test.class没有实际含义,只是
        //为了到时候追踪日志对象时一眼就能看出来是从哪个类里打日志的
        public static final Logger LOGGER = LoggerFactory.getLogger("Test.class");
        public static void main(String[] args) {
            try {
                LOGGER.debug("main方法开始执行了~~");
                LOGGER.info("开始记录第二行日志,我要开始做除法");
                int a = 10;
                int b = 0;
                LOGGER.trace("a=" + a);
                LOGGER.trace("b=" + b);
                System.out.println(a / b);
            } catch (Exception e) {
                e.printStackTrace();
                LOGGER.error("功能出现异常" + e);
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    3.3Logback配置详解

    Logback日志系统的特性都是通过核心配置文件logback.xml控制的

    3.3.1Logback配置详解-输出位置,格式设置
    • 通过logback.xml中的标签可以设置输出位置和日志信息的详细格式

    • 通常可以设置2个日志输出位置:一个是控制台,一个是系统文件中

      • 输出到控制台

        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
            <target>System.outtarget>
            <encoder>
                
                <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level]  %c [%thread] : %msg%npattern>
            encoder>
        appender>
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • %d表示日期,后面的{}用来规定日期格式
        • %-5level表示级别,并从左显示5个字符宽度
        • %c表示日志对象的名字
        • %thread表示线程名
        • %msg表示日志消息
        • %n是换行符
      • 输出到系统文件

        <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%npattern>
                <charset>utf-8charset>
            encoder>
            
            <file>C:/code/itheima-data.logfile>
            
            <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
                
                <fileNamePattern>C:/code/itheima-data2-%d{yyyy-MM-dd}.log%i.gzfileNamePattern>
                
                <maxFileSize>1MBmaxFileSize>
            rollingPolicy>
        appender>
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14
        • 15
        <root level="ALL">
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
        root>
        
        • 1
        • 2
        • 3
        • 4

        这里如果不写则不会在控制台打印日志

    3.3.2Logback配置详解-日志级别设置
    • 日志级别(忽略大小写)

      • 程度依次是:TRACE默认是debug,对应其方法

      • 作用:用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息

      • ALL和OFF分别是打开全部日志信息及关闭全部日志信息

      • 具体在标签的level属性中设置日志级别

        <root>
            <appender-ref ref="CONSOLE"/>
            <appender-ref ref="FILE"/>
        root>
        
        • 1
        • 2
        • 3
        • 4
  • 相关阅读:
    EPB功能开发与测试(基于ModelBase实现)
    Keepalived源码安装-高可用(主备)场景
    java即时高校信息发布系统计算机毕业设计MyBatis+系统+LW文档+源码+调试部署
    基于ISO13400 (DoIP) 实现车辆刷写
    windows机器配置自签名ssl证书,部署文件服务器
    ROS1余ROS2共存的一键安装(全)
    基于bootstrap的二维码支付系统webAPP设计
    springboot + vue实战
    spring5(二):IOC容器概述
    redis字典
  • 原文地址:https://blog.csdn.net/maxiangyu_/article/details/126863198