特殊文本文件日志技术重点笔记。

特殊文本文件,日志技术(黑马 一套入门 3h)

特殊文件

image-20240917164304185

日志技术

把程序运行的信息,记录到文件中,方便程序员定位bug,并了解程序的执行情况等。

1.为什么要用这些特殊文件
1.1存储单个用户的: 用户名,密码

image-20240917164431731

1.2存储多个用户的:用户名,密码,家乡,性别

image-20240917164846687

2 这些特殊文件,我们主要学什么
2.1 了解它们的特点,作用
2.2 学习使用程序读取它们里面的数据
2.3 学习使用程序把数据存储到这些文件里

Properties

image-20240917165600385

使用Properties读取属性文件里的键值对数据

构造器用于构建Properties集合对象(空容器)
public Properties()用于构建Properties集合对象(空容器)
常用方法说明
public void load(InputStream is)通过字节输入流,读取属性文件里的键值对数据
public void load(Reader reader)通过字符输入流,读取属性文件里的键值对数据
public String getProperty(String key)根据键获取值(其实就是get方法效果)
public Set stringPropertyNames()获取全部键的集合(其实就是ketSet()方法的效果)
public Object setProperty(String key, String value)保存键值对数据到Properties对象中去
public void store(OutputStream os, String comments)把键值对数据,通过字节输出流写出到属性文件里去
public void store(Writer w, String comments)把键值对数据,通过字符输出流写出到属性文件里去

XML(全称EXtensible Markup Language, 可扩展标记语言)

  • 本质是一种数据的格式,可以用来存储复杂的数据结构和数据关系。

1.XML

  • XML中的"<标签名>" 称为一个标签或一个元素,一般是成对出现的。
  • XML中的标签名可以自己定义(可扩展), 但必须要正确的嵌套
  • XML中只能有一个根标签
  • XML中的标签可以有属性。
  • 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件**,后缀一般要写成.xml。**

2.XML的创建

  • 就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello_world.xml
2.1IDEA创建XML文件

image-20240917173014138

3.XML的语法规则

  • XML文件的后缀名为:xml,文档声明必须是第一行

    <? xml version="1.0" encoding="UTF-8" ?>
    version: XML默认的版本号码,该属性是必须存在的
    encoding:XML文件的编码
    
  • XML中可以定义注释信息:

  • XML中书写 “<”, "&"等,可以会出现冲突,导致报错,此时可以用如下特殊字符替代。

image-20240917173805698

  • XML中可以写一个叫CDATA的数据区: <![CDTAT[ …内容… ]]>, 里面的内容可以随便写。

4.XML的作用和应用场景

  • 本质是一种数据格式,可以存储复杂的数据结构,和数据关系。
  • 应用场景: 经常用来做为系统的配置文件;或者作为一种特殊的数据结构,在网络中进行传输。

image-20240917174303902

5.解析XML文件

  • 使用程序读取XML文件中的数据

image-20240917174640362

5.1使用Dom4J解析出XML文件

需求:使用Dom4j把一个XML文件的数据进行解析

步骤:

1. 下载Dom4j框架,官网下载
1. 在项目中创建一个文件夹: lib
1. 将dom4j-2.1.3.jar文件复制到lib文件夹
1. 在jar文件上点右键,选择Add as Library->点击OK
1. 在类中导包使用
5.2DOM4J解析XML文件的思想: 文档对象模型

image-20240917175746758

  • SAXReader: Dom4j提供的解析器,可以认为是代表整个Dom4j框架
构造器/方法说明
public SAXReader()构建Dom4J的解析器对象
public Document read(String url)把XML文件读成Document对象
public Document read(InputStream is)通过字节输入流读取XMl文件
  • Document
方法名说明
Element getRootElement()获得根元素对象
  • Element提供的方法

image-20240917180651309

6.如何使用程序把数据写出到XML文件中去?

不建议用colm4J做。推荐直接把程序里的数据拼接成XML格式,然后用IO流写出去!!

6.1约束XML文件的编写[了解]
  • 就是限制XML文件只能按照某种格式进行书写。专门用来限制xml书写格式的文档,比如:限制标签,属性应该怎么写。

image-20240917190347137

6.2约束文档的分类(了解)
  • DTT文档

1:编写DTD约束文档,后缀必须是dtd

<!ElEMENT 书架(+)>
<!ElEMENT(书名,作者,售价)>
<!ElEMENT 书名(#PCDATA)>
<!ELEMENT 作者(#PCDATA)>
<!ELEMENT 售价(#PCDATA)>

2.在需要编写的XML文件中导入该DTD约束文档

3.然后XML文件, 就必须按照DTD约束文档指定的格式进行编写,否则报错!

[!warning]

可以约束XML文件的编写

不能约束具体的数据类型

  • Schema文档

需求: 利用schema文档约束,约束一个XML文件的编写

1: 编写schema约束文档,后缀必须是.xsd,具体的形式到代码中观看

2: 在需要编写的XML文件中导入该schema约束文档

3: 按照约束内容编写XML文件的标签

日志

问题

  • 希望系统能记住某些数据是被谁操作的,比如被谁删除了?
  • 想分析用户浏览系统的具体情况,以便挖掘用户的具体喜好?
  • 当系统在开发中或者上线后出现了bug,崩溃了,该通过什么去分析,定位bug?
  • 好比生活中的日记,可以纪录你生活中的点点滴滴。
  • 程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息。
目前记录日志的方案
public static void test(String number)
	try {
		int resul t = Integer.parselnt(number);
		System.out.println("输入的数字为"+result);
	} catch (NumberFormatException e) {
		System.out.println("输入的数字有误,请输入一个整数");
    }
}
弊端
  • 日志会展示在控制台

  • 不能更方便的将日志记录到其他的位置(文件,数据库)

  • 想取消日志,需要修改源代码才可以完成

日志技术

  • 可以将系统执行的信息, 方便的记录到指定的位置(控制台,文件中,数据库中)。
  • 可以随时以开关的形式控制日志的启停,无需侵入到源代码中去进行修改。

日志技术的体系结构

image-20240917193726601

Logback日志框架官方网站:https://lobback.qos.ch/index.html
Logback日志框架有以下几个模块

image-20240917194156370

想使用Logback日志框架,至少需要在项目中整合如下三个模块:

image-20240917194302608

Logback快速入门

需求
  • 使用Logback日志框架,记录系统的运行信息。
实现步骤

1:导入Logback框架到项目中去。

2:将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是src下)。

3:创建Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息。

public static final Logger LOGGER = LoggerFactory.getLogger("类名");

[!warning]

对Logback日志框架的控制,都是通过其核心配置文件logback.xml来实现的。

核心配置文件logback.xml

概念:

对Logback日志框架进行控制的。

日志的输出位置,输出格式的设置。
  • 通常可以设置2个输出日志的位置: 一个是控制台,一个是系统文件中。
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<appender name="FILE" clss="ch.qos.logback.core.rolling.RollingFileAppender">
开启日志(ALL),取消日志(OFF)
<root level="ALL">
    <appender-ref ref="CONSOLE"/>
	<appender-ref ref="FILE" />
</root>
Logback设置日志级别
  • 日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高):
日志级别说明
trace追踪,指明程序运行轨迹
debug调试,实际应用中一般将其作为最低级别,而trace则是很少使用
info输出重要的运行信息,数据连接,网络连接,IO操作等等,使用较多
warn警告信息,可能会发生问题,使用较多
error错误信息,使用较多
为什么要学习日志级别
<root level="info">
	<appender-ref ref="CONSOLE" />
	<appender-ref ref="FILE" />
	
</root>
  • 只用日志级别是大于或等于核心配置文件配置的日志级别,才会被记录,否者不记录。

信息,可能会发生问题,使用较多 |
| error | 错误信息,使用较多 |

为什么要学习日志级别
<root level="info">
	<appender-ref ref="CONSOLE" />
	<appender-ref ref="FILE" />
	
</root>
  • 只用日志级别是大于或等于核心配置文件配置的日志级别,才会被记录,否者不记录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值