日志框架的使用

一、概述

什么是日志?

日志好比生活中的日记,可以记录程序的运行过程信息,并且可以永久保存。

前面我们记录程序运行过程是用输出语句的形式打印到控制台,这种方式的弊端是:

  • 信息只能展示控制台上
  • 不能将其记录到其他的位置(例如:文件中或者数据库中)
  • 当我们不想记录信息时,我们需要修改代码,删除输出语句。

日志技术优势:

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

二、体系架构

日志规范的接口:JCL或者slf4j。

日志实现框架:Log4j、JUL,Logback(重点)、以及其他实现的框架。

什么是日志规范?

  • 日志规范就是一些接口,提供给日志实现框架制定的一个标准。

什么是日志框架?

  • 牛人或者第三方公司已经做好的日志记录实现代码,后来者可直接拿来使用。
  • 因为对JCL的接口不满意,有人就搞出了slf4j接口,因为对Log4j的性能不满意,有人就高了Logback。

三、Logback

3.1 概述

Logback日志框架

  • Logback由log4j创始人设计的另一个开源日志组件,性能比log4j要好
  • 官方网站:https://logback.qos.ch/index.html
  • Logback是基于slf4j的日志规范实现的框架

Logback的主要技术模块:

至少需要前三个模块

  • slf4j-api:日志规范,必须有。

  • logback-core:logback-core模块为其他两个模块奠定了基础,必须有。

  • logback-classic:它是log4j的一个改良版本,同时完整实现了slf4j API,必须有。

  • logback-access:该模块与Tomcat和Jetty等Servlt容器集成,以提供Htpp访问日志功能。(可视化日志)

3.2 使用

若要使用Logback日志技术,需要先导入Logback相关技术

  1. 在项目下创建一个文件夹(lib),导入Logback的相关jar包(至少 slf4j-api、logback-core、logback-classic),并将其添加到依赖库。

在这里插入图片描述

在这里插入图片描述

  1. 导入成功后,再将Logback的核心配置文件logback.xml拷贝到src目录下(必须是src下)
  2. 在代码中获取日志对象
    //获取日志对象
    public static final Logger LOGGER = LoggerFactory.getLogger("类名.class");
  1. 使用日志对象调用其方法输出日志信息,先将logback.xml文件中的D:/code/Logback-data.log路径改为你想将日志存储在哪个地方,这里该成ALL,后面会介绍这些地方的作用。
    //运行以下代码
	public static void main(String[] args) {
    //运行后,控制台就会打印这些日志,且在你设置的路径下也会生成日志文件,文件内容就是运行中的日志。
        try {
            LOGGER.debug("第一行代码Debug日志");
            LOGGER.warn("第二行代码warn日志");
            LOGGER.info("第三行代码info日志");
            LOGGER.info("开始除法");
            int a = 10, b = 0;
            LOGGER.trace("a = " + a);
            LOGGER.trace("b = " + b);
            LOGGER.info(("a/b = " + a / b));
        }catch (Exception e){
            e.printStackTrace();
            LOGGER.error("错误信息为:" + e);
        }
    }

3.3 Logback配置详解

3.3.1 输出位置、格式设置
    <!--
        CONSOLE :表示当前的日志信息是可以输出到控制台的。
		class:后面是类
    -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <!--输出流对象 默认 System.out(无颜色日志) System.err(红色打印日志)-->
        <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>
        <!--文件日志输出路径-->
        <file>D:/code/Logback-data.log</file>
        <!--指定日志文件拆分和压缩规则-->
        <rollingPolicy
                class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--通过指定压缩文件名称,来确定拆分后的文件格式-->
            <fileNamePattern>D:/code/Logback-data2-%d{yyyy-MMdd}.log%i.gz</fileNamePattern>
            <!--当日志文件达到1MB,就将日志文件拆分-->
            <maxFileSize>1MB</maxFileSize>
        </rollingPolicy>
    </appender>
3.3.2 日志级别设置

项目上线后,我们指向记录一些error日志,其他级别的不记录,那么我们就需要设置日志的输出级别来控制输出和不输出。

日志级别(从小到大,书写时忽略大小写)

  • TRACE<DEBUG<INFO<WARN<ERROR

  • ALL和OFF表示打开全部日志信息和关闭所有日志信息。

    <!--
    level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
   , 默认debug
    <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
    -->
    <root level="ALL">
        <!-- 这里可控制日志希望在哪里打印,若不想在控制台打印,只需要将<appender-ref ref="CONSOLE"/>删掉即可 -->
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE" />
    </root>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值