一、需要学什么?
二、日志技术
1、概述
- 生活中的日志:生活中的日志就好比日记,可以记录你生活的点点滴滴。
- 程序中的日志:程序中的日志可以用于记录程序运行过程中的信息,并可以进行永久存储。
以前记录日志的方式:使用输出语句来记录日志
输出语句的弊端:
- 信息只能展示在控制台
- 不能将其记录到其他的位置(文件、数据库)
- 想取消记录的信息需要修改代码才可以完成
2、优势
- 可以将系统执行的信息选择性的记录到指定的位置(控制台、文件、数据库)。
- 可以随时以开关的形式控制是否记录日志,无需修改代码。
总结
1、日志技术的具体优势?
输出语句 | 日志技术 | |
---|---|---|
输出位置 | 只能是控制台 | 可以将日志信息输出到控制台,可以写入到文件中或数据库中 |
取消日志 | 需要修改代码,灵活性比较差 | 无需修改代码,灵活性比较好 |
多线程 | 性能较差 | 性能较好 |
3、体系结构
- 日志规范:一些接口,提供给日志的实现框架设计的标准。
- 日志框架:牛人或者第三方公司已经做好的日志记录实现代码,后来者直接可以拿去使用。
- 因为对Commons Logging的接口不满意,有人就搞了SLF4J。因为对Log4j的性能不满意,有人就搞了Logback。
总结
1、日志的规范是什么?常见的有几种形式?
- 日志规范大多都是一些接口,提供给实现框架去设计的
- 常见的规范是:
- Commons Logging
- Simple Logging Facade for Java
2、日志的实现框架有哪些常见的?
- Log4J
- Logback(我们重点学习的,其他的都大同小异)
三、Logback概述
1、Logback日志框架
-
Logback是由
log4j
创始人设计的另一个开源日志组件,性能比log4j
要好。 -
官方网站:https://logback.qos.ch/index.html
- Logback是基于
slf4j
的日志规范实现的框架。
2、Logback分为三个技术模块
- logback-core:
logback-core模块
为其他两个模块奠定了基础,必须有。 - logback-classic:它是
log4j
的一个改良版本,同时它完整实现了slf4j API
。 - logback-access:
logback-access模块
与Tomcat
和Jetty
等Servlet
容器集成,以提供HTTP
访问日志功能。
3、Logback日志框架第三方jar包下载
(1)第一步
- 打开百度搜索logback,进入官网
(2)第二步
- 点击Download,进入下载页面
(3)第三步
- 选择1.2.3版本,进入页面
4、SLF4J第三方jar包下载
(1)第一步
- 打开百度,搜索SLF4J官网,进入页面
(2)第二步
- 点击Download,进入下载页面
(3)第三步
- 选择好1.7.26版本后,点击对应的jar包,下载
总结
1、使用Logback需要使用哪几个模块?各自的作用是什么?
- slf4j-api:日志规范
- logback-core:基础规范
- logback-classic:它是log4j的一个改良版本,同时它完整实现了slf4j API
四、Logback快速入门
需求:
- 导入Logback日志技术到项目中,用于记录系统的日志信息。
分析:
1、第一步
-
第一步:在项目下新建文件夹
lib
,导入Logback
的相关jar
包到该文件夹下,并添加到项目依赖库中去。
2、第二步
-
第二步:将Logback的核心配置文件
logback.xml
直接拷贝到src
目录下(必须是src下)。
<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="10 seconds" debug="false"> <!-- CONSOLE:表示当前的日志信息是可以输出到控制台的 --> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <!-- 输出流对象 默认 System.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> <!-- 日志输出路径 --> <file>E:/JavaDevelop/log/app-data.log</file> <!-- 指定日志文件拆分和压缩规则 --> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <!-- 通过指定压缩文件名称,来确定分割文件方式 --> <fileNamePattern>E:/JavaDevelop/log/app-data2-%d{yyyy-MM-dd}.log%i.gz</fileNamePattern> <!-- 文件拆分大小 --> <maxFileSize>1MB</maxFileSize> </rollingPolicy> </appender> <!-- level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF , 默认debug <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。 --> <root level="All"> <appender-ref ref="CONSOLE" /> <appender-ref ref="FILE" /> </root> </configuration>
3、第三步
-
第三步:在代码中获取日志的对象。
package com.app.logback; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** 目标:快速搭建Logback日志框架,记录程序的执行情况到控制台、文件中。数据库(暂时没学) */ public class LogbackDemo { // 创建Logback的日志对象,代表了日志技术。 public static final Logger LOGGER = LoggerFactory.getLogger("LogbackDemo.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、使用Logback的开发步骤是怎么样的?
- 第一步:在项目下新建lib目录,导入Logback的相关jar包到lib目录下,并添加到项目库中去。
- 第二步:必须将Logback的核心配置文件logback.xml直接拷贝到src目录下。
- 第三步:在代码中获取日志的对象。
- 第四步:使用日志对象输出日志信息。
五、Logback配置详解-输出位置、格式设置
Logback日志系统的特性都是通过核心配置文件logback.xml控制的。
- 通过logback.xml中的
<append>
标签可以设置输出位置和日志信息的详细格式。 - 通常可以设置2个日志输出位置:一个是控制台、一个是系统文件中。
1、输出到控制台
- 输出到控制台的配置标签
2、输出到系统文件中
- 输出到系统文件的配置标签
总结
1、在核心配置文件Logback.xml中可以配置的日志方向有哪些?
- 可以配置到控制台;也可以配置到系统文件中。
六、Logback配置详解-日志级别设置
1、问题引入
如果系统上线后只想记录一些错误的日志信息或者不想记录日志了,怎么办?
- 可以通过设置日志的输出级别来控制哪些日志信息输出或者不输出。
2、日志级别
- 级别程度依次是:TRACE<DEBUG<INFO<WARN<ERROR;
- TRACE:路径跟踪级别
- DEBUG:调试级别
- INFO:关键信息级别
- WARN:警告级别
- ERROR:错误级别
- 默认级别是
debug
(忽略大小写),对应其方法。 - 作用:用于控制系统中哪些日志级别是可以输出的,只输出级别不低于设定级别的日志信息。
ALL
和OFF
分别是打开全部日志信息,关闭全部日志信息。
3、日志级别设置
具体在<root level="INFO">
标签的level
属性中设置日志级别。
总结
1、设置日志输出级别的作用是什么?
- 用于控制系统中哪些日志级别是可以输出的。
2、Logback的日志级别是什么样的?
- 级别程度依次是:TRACE<DEBUG<INFO<WARN<ERROR
- 默认级别是debug(忽略大小写),只输出不低于当前级别的日志
- ALL和OFF分别是打开全部日志信息和关闭全部日志信息