day11_特殊文件、日志技术

9 阅读5分钟

day11_特殊文件、日志技术

1. Properties

image-20230821225910028.png

  • 尽管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中书写”<”、“&”等,可能会出现冲突,导致报错,此时可以用如下特殊字符替代-->
&lt;    <  小于
&gt;    >  大于
&amp;   &  和号
&apos;  '  单引号
&quot;  "  引号
  • XML中可以写一个叫CDATA的数据区,里面的内容可以随便写
 <![CDATA[内容随便写~~~]]>

2.3 DOM解析

2.3.1 解析原理

  • DOM解析原理:一次性读取XML中的所有数据,在内存中形成一颗DOM树
    • Document对象:整个xml文档
    • Node对象
      • Element对象:标签
      • Attribute对象:属性
      • Text对象:文本内容

image-20230821230027467.png

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 日志体系

  • 日志框架:牛人或者第三方公司已经做好的实现代码,后来者直接可以拿去使用
  • 日志接口:设计日志框架的一套标准,日志框架需要实现这些接口

image-20230821231628761.png

因为对Commons Logging接口不满意,有人就搞了SLF4J;因为对Log4j的性能不满意,有人就搞了Logback。下面介绍的Logback是基于slf4j的日志规范实现的框架。

3.3 Logback

  • 使用Logback需要在项目中整合三个模块:

    • slf4j-api(日志接口)
    • logback-core(基础模块)
    • logback-classic(功能模块,完整实现了slf4j的API)
  • 使用步骤

    1. 导入Logback框架到项目中去
    2. 将Logback框架的核心配置文件logback.xml直接拷贝到src目录下
    3. 创建Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息
      • public static final Logger LOGGER = LoggerFactory.getLogger(“类名");
    4. 设置日志的输出位置
      • 输出到控制台:<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
      • 输出到系统文件:<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    5. 设置日志开关
      • <root level=“ALL"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE" /></root>

3.4 日志级别

  • 日志级别指的是日志信息的类型
  • 只有日志的级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录
  • 默认级别是debug
日志级别说明
trace追踪,指明程序运行轨迹
debug调试,实际应用中一般将其作为最低级别,而 trace 则很少使用
info输出重要的运行信息,数据连接、网络连接、IO操作等等,使用较多
warn警告信息,可能会发生问题,使用较多
error错误信息, 使用较多