日志框架:系统在开发阶段,或者上线后,一旦业务出现问题,需要有信息去定位,如何记录程序的运行信息;类似飞机黑匣子 阶段项目实战:学以致用,使用java程序处理数据,控制业务逻辑推进 日志框架: 1、日志技术的描述 2、日志技术体系结构 3、Logback概述 4、Logback快速入门 5、Logback配置详解-输出位置、格式设置 6、Logback配置详解-日志级别设置
日志技术的描述: 想清楚的知道一个系统运行的过程和详情怎么办 日志: 生活中的日志: 程序中的日志:程序中的日志可以用来记录程序运行过程中的信息,并可以进行永久存储 日志的体系: 2、日志的实现框架有哪些: Log4j Logback(我们重点学习的,其他都大同小异) Logback日志框架,Logback是由Log4j创始人设计的另一个开源日志组件,性能比log4j要好 官网:logback.qos.ch/index.html Logback是基于slf4j的日志规范实现的框架 Logback主要分为三个技术模块 logback-core:logbakc-core模块为其他两个模块奠定了基础,必须有 logback-classic:它是log4j的一个改良版,同时它完整的实现了slf4j API; logback-access模块与tomcat和jetty等servelet容器集成,以提供Http访问日志的功能
1、使用logback需要使用哪几个模块,各自的作用是什么。 slf4j-api:日志规范 logback-core:基础模块 logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API
需求:导入Logback日志技术到项目中,用于记录系统的日志信息 分析: 1、在项目下新建文件夹lib,导入Logback相关jar包到该文件夹下,并添加到项目依赖中去 2、将lobback的核心配置文件logback.xml直接拷贝到src目录下(必须是src目录) 3、在代码中获取日志的对象 public static final Logger LOGGER = LoggerFactory.getLogger("类对象"); //使用final修饰,原因是日志对象只需要一个,不需要别人来改
Logback日志系统的特性都是通过核心配置文件logback.xml控制的 Logback日志输出位置、格式设置: 通过logback.xml中的<append>标签可以设置输出位置和日志信息的详细格式 通常可以设置2个输出位置:一个是控制台,一个是文件系统中 在<root>标签里面配置日志打或者不打;
1、如果系统上线后只想记录一些错误的日志信息或者不想记录日志 ,怎么办; 可以通过设置日志的输出级别来控制哪些日志信息输出或者不输出 级别程度:TRACE<DEBUG<INFO<WARN<ERROR>;默认级别是debug(忽略大小写),对应方法 TRACE:路径跟踪级别,debug:调试级别;warn;警告级别;error:错误级别; 作用:用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息 ALL 和OFF分别是打开全部日志信息,及关闭全部日志信息 具体在<root level = "info"> 里面配置
测试代码块:
-
package com.itheima.logback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** 目标:快速搭建logback日志框架,记录程序的运行情况 */ public class Test { //创建Logback的日志对象,代表了日志技术 public static final Logger LOGGER = LoggerFactory.getLogger("Test.class"); public static void main(String[] args) { try { LOGGER.debug("我的main方法开始执行了"); LOGGER.info("我开始记录第二行日志,我开始做除法了"); LOGGER.info("我开始记录第二行日志,我开始做除法了"); int a = 10; int b = 0; LOGGER .trace("a=" + a); LOGGER .trace("b=" + b); System.out.println(a/b); //<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %c [%thread] : %msg%n</pattern> // 日期 日志级别 class 线程 : 日志输出的信息 换行 } catch (Exception e) { e.printStackTrace(); LOGGER.error("功能出现异常, " + e); } } }
项目的目录结构: