day11_特殊文件、日志技术
1. Properties
- 尽管Properties是一个Map集合(键值对集合),但是我们一般不会将其当集合使用
- Properties通常是用来代表属性文件的,通过Properties可以读写属性文件里的内容
构造方法
构造器 | 说明 |
---|---|
public Properties() | 用于构建Properties集合对象(空容器) |
常用方法
常用方法 | 说明 |
---|---|
public void load(InputStream is) | 通过字节输入流,读取属性文件里的键值对数据 |
public void load(Reader reader) | 通过字符输入流,读取属性文件里的键值对数据 |
public String getProperty(String key) | 根据键获取值(其实就是get方法的效果) |
public Set<String> stringPropertyNames() | 获取全部键的集合(其实就是ketSet方法的效果) |
public Object setProperty(String key, String value) | 保存键值对数据到Properties对象中去 |
public void store(OutputStream os, String comments) | 把键值对数据,通过字节输出流写出到属性文件里去 |
public void store(Writer w, String comments) | 把键值对数据,通过字符输出流写出到属性文件里去 |
2. XML
2.1 XML文件
概念:
- XML:全称EXtensible Markup Language,可扩展标记语言
- 本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系
- 经常用来做为系统的配置文件,或者作为一种特殊的数据结构,在网络中进行传输
特点:
- XML中的“<标签名>” 称为一个标签或一个元素,一般是成对出现的
- XML中的标签名可以自己定义(可扩展),但必须要正确的嵌套
- XML中只能有一个根标签
- XML中的标签可以有属性
- 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml
2.2 语法
- XML文件的后缀名为:xml,文档声明必须是第一行
<?xml version="1.0" encoding="UTF-8" ?>
version:XML默认的版本号码、该属性是必须存在的
encoding:本XML文件的编码
- 注释
<!-- 注释语法 -->
- 特殊符号替代
<!--XML中书写”<”、“&”等,可能会出现冲突,导致报错,此时可以用如下特殊字符替代-->
< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号
- XML中可以写一个叫CDATA的数据区,里面的内容可以随便写
<![CDATA[内容随便写~~~]]>
2.3 DOM解析
2.3.1 解析原理
- DOM解析原理:一次性读取XML中的所有数据,在内存中形成一颗DOM树
- Document对象:整个xml文档
- Node对象
- Element对象:标签
- Attribute对象:属性
- Text对象:文本内容
2.3.2 Dom4J解析
- 使用Dom4J第三方框架把一个XML文件的数据进行解析
1. 得到Document对象
- SAXReader
构造器 | 说明 |
---|---|
public SAXReader() | 构建Dom4J的解析器对象 |
public Document read(String url) | 把XML文件读成Document对象 |
public Document read(InputStream is) | 通过字节输入流读取XML文件 |
- Document
方法名 | 说明 |
---|---|
Element getRootElement() | 获得根元素对象 |
2. Element提供的方法
方法名 | 说明 |
---|---|
public String getName() | 得到元素名字 |
public List<Element> elements() | 得到当前元素下所有子元素 |
public List<Element> elements(String name) | 得到当前元素下指定名字的子元素返回集合 |
public Element element(String name) | 得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个 |
public String attributeValue(String name) | 通过属性名直接得到属性值 |
public String elementText(子元素名) | 得到指定名称的子元素的文本 |
public String getText() | 得到文本 |
3. 日志技术
3.1 日志概述
什么是日志?
- 程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息
- 当系统在开发中或者上线后出现了bug,崩溃了,就可以通过日志去分析、定位bug
日志技术
- 可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中)
- 可以随时以开关的形式控制日志的启停,无需侵入到源代码中去进行修改
3.2 日志体系
- 日志框架:牛人或者第三方公司已经做好的实现代码,后来者直接可以拿去使用
- 日志接口:设计日志框架的一套标准,日志框架需要实现这些接口
因为对Commons Logging接口不满意,有人就搞了SLF4J;因为对Log4j的性能不满意,有人就搞了Logback。下面介绍的Logback是基于slf4j的日志规范实现的框架。
3.3 Logback
-
使用Logback需要在项目中整合三个模块:
- slf4j-api(日志接口)
- logback-core(基础模块)
- logback-classic(功能模块,完整实现了slf4j的API)
-
使用步骤
- 导入Logback框架到项目中去
- 将Logback框架的核心配置文件logback.xml直接拷贝到src目录下
- 创建Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息
public static final Logger LOGGER = LoggerFactory.getLogger(“类名");
- 设置日志的输出位置
- 输出到控制台:
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
- 输出到系统文件:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
- 输出到控制台:
- 设置日志开关
<root level=“ALL"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE" /></root>
3.4 日志级别
- 日志级别指的是日志信息的类型
- 只有日志的级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录
- 默认级别是debug
日志级别 | 说明 |
---|---|
trace | 追踪,指明程序运行轨迹 |
debug | 调试,实际应用中一般将其作为最低级别,而 trace 则很少使用 |
info | 输出重要的运行信息,数据连接、网络连接、IO操作等等,使用较多 |
warn | 警告信息,可能会发生问题,使用较多 |
error | 错误信息, 使用较多 |