目录
- 特殊文件
- Properties文件
- XML文件
- XML文件有如下的特点
- XML的作用和应用场景
- 解析XML文件
- 日志技术
- 概述
- 日志技术的体系结构
- Logback日志框架
- 概述
- 快速入门
- 核心配置文件logback.xml
- 日志级别
- 项目中使用日志框架
特殊文件
Properties文件
后缀为.properties的文件,称之为属性文件,它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。
核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容。
Properties读取属性文件的步骤如下:
1、创建一个Properties的对象出来(键值对集合,空容器)
2、调用load(字符输入流/字节输入流)方法(哪个都行,读文本还是建议用前者),开始加载属性文件中的键值对数据到properties对象中去
3、调用getProperty(键)方法,根据键取值
注意这里管道资源不需要我们手动关闭,api内部自动关
示例代码如下:
public class PropertiesTest1 {
public static void main(String[] args) throws Exception {
// 1、创建一个Properties的对象出来(键值对集合,空容器)
Properties properties = new Properties();
System.out.println(properties);//输出{}
// 2、开始加载属性文件中的键值对数据到properties对象中去
properties.load(new FileReader("properties-xml-log-app\\src\\users.properties"));
System.out.println(properties);//输出{admin=123456,...}
// 3、根据键取值
System.out.println(properties.getProperty("赵敏"));
System.out.println(properties.getProperty("张无忌"));
// 4、遍历全部的键和值。
//获取键的集合
Set<String> keys = properties.stringPropertyNames();
for (String key : keys) {
//再根据键获取值
String value = properties.getProperty(key);
System.out.println(key + "---->" + value);
}
properties.forEach((k, v) -> {
System.out.println(k + "---->" + v);
});
}
}
使用Properties往属性文件中写键值对,需要用到的方法如下
往Properties属性文件中写键值对的步骤如下
1、创建Properties对象出来,
2、调用setProperty存储一些键值对数据
3、调用store(字符输出流/字节输出流, 注释),将Properties集合中的键和值写到文件中
注意:第二个参数是注释,必须得加;
注意这里管道资源不需要我们手动关闭,api内部自动关
示例代码如下:
public class PropertiesTest2 {
public static void main(String[] args) throws Exception {
// 1、创建Properties对象出来,先用它存储一些键值对数据
Properties properties = new Properties();
properties.setProperty("张无忌", "minmin");
properties.setProperty("殷素素", "cuishan");
properties.setProperty("张翠山", "susu");
// 2、把properties对象中的键值对数据存入到属性文件中去
properties.store(new FileWriter("properties-xml-log-app/src/users2.properties")
, "i saved many users!");
}
}
运行生成一个新的文件users2.properties
XML文件
xml文件是一种在开发中经常使用的文件,是可扩展的标记语言,意思是它是由一些标签组成的,而这些标签是自己定义的。本质上是一种数据格式,可以用来表示复杂的数据关系。
XML文件有如下的特点
XML中的<标签名> 称为一个标签或者一个元素,一般是成对出现的。
XML中的标签名可以自己定义(可扩展),但是必须要正确的嵌套
XML中只能有一个根标签。
XML标准中可以有属性
XML必须第一行有一个文档声明,格式是固定的<?xml version="1.0" encoding="UTF-8"?>
XML文件必须是以.xml为后缀结尾
数据格式:
XML文件中除了写以上的数据格式之外,还有一些特殊的字符不能直接写。像 <,>,&等这些符号不能出现在标签的文本中,因为标签格式本身就有<>,会和标签格式冲突。
<data> 3 < 2 && 5 > 4 </data>
<!-- 错误写法 -->
1
2
如果标签文本中有这些特殊字符,需要用一些占位符代替。
< 表示 <
> 表示 >
& 表示 &
' 表示 '
" 表示 "
1
2
3
4
5
如果在标签文本中,出现大量的特殊字符,不想使用特殊字符,此时可以用CDATA区,格式如下
<data1>
<![CDATA[
3 < 2 && 5 > 4
]]>
</data1>
XML的作用和应用场景
本质是一种数据格式,可以存储复杂的数据结构,和数据关系
应用场景:经常用来做为系统的配置文件;或者作为一利
构,在网络中进行传输。
解析XML文件
使用程序读取XML文件中的数据
注意:程序员并不需要自己写原始的10流代码来解析XML,难度较大!也相当繁琐!
其实,有很多开源的,好用的,解析XML的框架,最知名的是:Dom4j(第三方研发的)
或者使用HUtool中的-XmlUtil:https://hutool.cn/docs/#/core/%E5%B7%A5%E5%85%B7%E7%B1%BB/XML%E5%B7%A5%E5%85%B7-XmlUtil
具体操作参考官方文档或者下面文章:https://blog.51cto.com/u_16099324/7177608
日志技术
概述
- 使用场景:
希望系统能记住某些数据是被谁操作的,比如被谁删除了?
想分析用户浏览系统的具体情况,以便挖掘用户的具体喜好?
当系统在开发中或者上线后出现了bug,崩溃了,该通过什么去分析、定位bug?
-
什么是日志?
好比生活中的日记,可以记录你生活中的点点滴滴。
程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息。 -
日志技术的作用:
可以將系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中)。
可以随时以开关的形式控制日志的启停,无需侵入到源代码中去进行修改。
日志技术的体系结构
日志框架:牛人或者第三方公司已经做好的实现代码,后来者直接可以拿去使用。
日志接口:设计日志框架的一套标准,日志框架需要实现这些接口。
注意1:因为对Commons Logging接口不满意,有人就搞了SLF4);因为对Log4的性能不满意,有人就搞了Logback。
注意2:Logback是基于slf4j的日志规范实现的框架。
Logback日志框架
概述
Logback日志框架官方网站:https://logback.qos.ch/index.html
Logback日志框架有以下几个模块:
想使用Logback日志框架,至少需要在项目中整合如下三个模块:
slf4j-api: 日志接口
Logbatk-core:基础模块
logback-classic:slf4j接口模块
快速入门
需求
使用Logback日志框架,记录系统的运行信息。
实现步骤
①:导入Logback框架到项目中去。
slf4j-api:日志接口
Logback-core
logback-classic
②:将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是src下)。
③:创建Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息。
核心配置文件logback.xml
作用:对Logback日志框架进行控制的(日志的输出位置、输出格式的设置)
通常可以设置2个输出日志的位置:一个是控制台、一个是系统文件中
开启日志(ALL),取消日志(OFF)
<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE" />
</root>
日志级别
什么是日志级别?
日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高)
为什么要学习日志级别?
<root level="info">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE" />
</root>
只有日志的级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录。
项目中使用日志框架
参考我之前的博客:https://blog.csdn.net/qq_42038623/article/details/106240925