java——特殊文件日志技术

目录

  • 特殊文件
    • Properties文件
    • XML文件
      • XML文件有如下的特点
      • XML的作用和应用场景
      • 解析XML文件
  • 日志技术
    • 概述
    • 日志技术的体系结构
    • Logback日志框架
      • 概述
      • 快速入门
      • 核心配置文件logback.xml
      • 日志级别
      • 项目中使用日志框架

特殊文件

Properties文件

后缀为.properties的文件,称之为属性文件,它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。
核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容。

20240223-161246-jO.png

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往属性文件中写键值对,需要用到的方法如下
20240223-162107-Gj.png

往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
20240223-162559-pK.png

XML文件

xml文件是一种在开发中经常使用的文件,是可扩展的标记语言,意思是它是由一些标签组成的,而这些标签是自己定义的。本质上是一种数据格式,可以用来表示复杂的数据关系。

XML文件有如下的特点

XML中的<标签名> 称为一个标签或者一个元素,一般是成对出现的。
XML中的标签名可以自己定义(可扩展),但是必须要正确的嵌套
XML中只能有一个根标签。
XML标准中可以有属性
XML必须第一行有一个文档声明,格式是固定的<?xml version="1.0" encoding="UTF-8"?>
XML文件必须是以.xml为后缀结尾

数据格式:
20240223-164151-6v.png

XML文件中除了写以上的数据格式之外,还有一些特殊的字符不能直接写。像 <,>,&等这些符号不能出现在标签的文本中,因为标签格式本身就有<>,会和标签格式冲突。

<data> 3 < 2 && 5 > 4 </data>
<!--  错误写法 -->
1
2

如果标签文本中有这些特殊字符,需要用一些占位符代替。

&lt;  表示 <
&gt;  表示 >
&amp; 表示 &
&apos; 表示 '
&quot; 表示 "
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

日志技术

概述

  1. 使用场景:
希望系统能记住某些数据是被谁操作的,比如被谁删除了?
想分析用户浏览系统的具体情况,以便挖掘用户的具体喜好?
当系统在开发中或者上线后出现了bug,崩溃了,该通过什么去分析、定位bug?
  1. 什么是日志?
    好比生活中的日记,可以记录你生活中的点点滴滴。
    程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息。

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

日志技术的体系结构

20240223-174107-tw.png
日志框架:牛人或者第三方公司已经做好的实现代码,后来者直接可以拿去使用。
日志接口:设计日志框架的一套标准,日志框架需要实现这些接口。
注意1:因为对Commons Logging接口不满意,有人就搞了SLF4);因为对Log4的性能不满意,有人就搞了Logback。
注意2:Logback是基于slf4j的日志规范实现的框架。

Logback日志框架

概述

Logback日志框架官方网站:https://logback.qos.ch/index.html
Logback日志框架有以下几个模块:
20240223-174531-td.png

想使用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个输出日志的位置:一个是控制台、一个是系统文件中
20240223-182148-AE.png

开启日志(ALL),取消日志(OFF)

<root level="debug"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE" />
</root>

日志级别

什么是日志级别?
日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高)

20240223-182431-bV.png

为什么要学习日志级别?

<root level="info"><appender-ref ref="CONSOLE"/><appender-ref ref="FILE" />
</root>

只有日志的级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录。

项目中使用日志框架

参考我之前的博客:https://blog.csdn.net/qq_42038623/article/details/106240925

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2806489.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Qt MDI应用方法:QMdiArea和QMdiSubWindows类

重点&#xff1a; 1.使用MDI应用程序&#xff0c;需要在主窗口的工作区放置一个QMdiArea组件。 并将QMdiArea组件设置成中心窗口 2.MDI有两个显示模式&#xff1a;Tab多页显示模式和子窗口显示模式 子窗口显示模式有两种显示方法&#xff1a;窗口级联展开和平铺展开 窗口级联…

Vue+SpringBoot打造超市自助付款系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 商品类型模块2.2 商品模块2.3 超市账单模块 三、界面展示3.1 登录注册模块3.2 超市商品类型模块3.3 超市商品模块3.4 商品购买模块3.5 超市账单模块 四、部分源码展示4.1 实体类定义4.2 控制器接口 五、配套文档展示六、…

(蓝桥杯软件赛Java研究生组/A组)第一章语言基础-第二节:Java基础

文章目录 一&#xff1a;标识符、修饰符和注释&#xff08;1&#xff09;标识符&#xff08;2&#xff09;修饰符&#xff08;3&#xff09;注释 二&#xff1a;数据类型&#xff08;1&#xff09;分类&#xff08;1&#xff09;基本数据类型&#xff08;2&#xff09;引用数据…

大数据之Flink优化

文章目录 导言&#xff1a;Flink调优概览第1章 资源配置调优1.1 内存设置1.1.1 TaskManager 内存模型1.1.2 生产资源配置示例 1.2 合理利用 cpu 资源1.2.1 使用 DefaultResourceCalculator 策略1.2.2 使用 DominantResourceCalculator 策略1.2.3 使用DominantResourceCalculato…

在 where子句中使用子查询(一)

目录 子查询返回单行单列 查询公司工资最低的员工信息 查找公司雇佣最早的员工信息 子查询返回单行多列 查询与 ALLEN 工资相同&#xff0c;职位相同的所有员工信息 子查询返回多行单列 IN 操作 查询职位是“MANAGER”的所有员工的薪水 Oracle从入门到总裁:https://bl…

企业微信应用开发:使用Cpolar域名配置进行本地接口回调的调试指南

文章目录 1. Windows安装Cpolar2. 创建Cpolar域名3. 创建企业微信应用4. 定义回调本地接口5. 回调和可信域名接口校验6. 设置固定Cpolar域名7. 使用固定域名校验 企业微信开发者在应用的开发测试阶段&#xff0c;应用服务通常是部署在开发环境&#xff0c;在有数据回调的开发场…

JVM(1)

JVM简介 JVM是Java Virtual Machine的简称,意为Java虚拟机. 在java中,它归属于jre(java运行时环境), 而jre归属于jdk(java开发工具包). 虚拟机是指通过软件模拟的具有完整硬件功能的,运行在一个完全隔离的环境中的完整计算机系统. 常见的虚拟机:JVM, VMwave, VirtualBox. J…

代码随想录算法训练营第59天 | 583.两个字符串的删除操作 + 72.编辑距离 + 编辑距离总结篇

今日任务 583. 两个字符串的删除操作 72. 编辑距离 编辑距离总结篇 583.两个字符串的删除操作 - Medium 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 给定两个单词 word1 和 word2 &#xff0c;返回使得 word1 和 word2 相同所需的最小步数。 每步 可以…

K8S部署Java项目 pod报错 logs日志内容:no main manifest attribute, in app.jar

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

挑战!贪吃蛇小游戏的实现(2)

在贪吃蛇小游戏的实现&#xff08;1&#xff09;中&#xff0c;我们学习了win32 相关的一些知识&#xff0c;本篇文章&#xff0c;博主将带领大家从0开始实现贪吃蛇小游戏&#xff01; 贪吃蛇游戏设计与分析 本地化 <locale.h>实现本地化&#xff0c;该头文件提供的函数…

【方法】PDF如何与其它格式文件互相转换?

在工作上&#xff0c;有时候我们需要把PDF文件转换成其他格式的文件&#xff0c;比如Word、PPT、jpg等&#xff0c;或者是其他格式文件转换成PDF&#xff0c;那具体要如何操作呢&#xff1f;不清楚的小伙伴一起来看看吧&#xff01; 想把PDF文件转换成其他格式文件&#xff0c…

bisect_left 和 bisect_right 的源码实现及区别解析

哈喽大家好&#xff0c;我是chowley&#xff0c;最近再练二分查找的题&#xff0c;也顺便看了看Python官方的bisect库&#xff0c;这次做一个总结博客。 在 Python 中&#xff0c;bisect_left 和 bisect_right 是两个常用的二分查找函数&#xff0c;用于在已排序的序列中查找元…

Unity Shader ASE基础效果思路与代码(二):边缘光、扰动火焰

Unity Shader ASE基础效果思路与代码(二)&#xff1a;边缘光、扰动火焰 文章目录 Unity Shader ASE基础效果思路与代码(二)&#xff1a;边缘光、扰动火焰边缘光效果展示&#xff1a;代码与思路&#xff1a; 扰动火焰效果展示&#xff1a;代码与思路&#xff1a; 边缘光 效果展…

【黑马程序员】STL容器之string

string string 基本概念 string本质 string是c风格的字符串&#xff0c;而string本质上是一个类 string和char* 区别 char* 是一个指针string是一个类&#xff0c;类内部封装了char*,管理这个字符串&#xff0c;是一个char*型的容器 特点 string 内部封装了很多成员方法…

Linux第65步_学习“Makefie”

学习“Makefie”&#xff0c;为后期学习linux驱动开发做铺垫。 1、在“/home/zgq/linux/atk-mp1”创建一个“Test_MakeFile”目录用于学习“Makefie”。 打开终端 输入“cd /home/zgq/linux/回车”&#xff0c;切换到“/home/zgq/linux/”目录 输入“mkdir Linux_Drivers回…

Python 在Word中创建表格并填入数据、图片

在Word中&#xff0c;表格是一个强大的工具&#xff0c;它可以帮助你更好地组织、呈现和分析信息。本文将介绍如何使用Python在Word中创建表格并填入数据、图片&#xff0c;以及设置表格样式等。 Python Word库&#xff1a; 要使用Python在Word中创建或操作表格&#xff0c;需…

使用向量数据库pinecone构建应用06:日志系统异常检测 Anomaly Detection

Building Applications with Vector Databases 下面是这门课的学习笔记&#xff1a;https://www.deeplearning.ai/short-courses/building-applications-vector-databases/ Learn to create six exciting applications of vector databases and implement them using Pinecon…

[Java 项目亮点] 三层限流设计

思路来源&#xff1a;bilibili 河北王校长 文章目录 面试官可能会问你能详细介绍一下Nginx的http_limit_req_module模块吗&#xff1f;你能解释一下如何在Nginx中配置http_limit_req_module模块吗&#xff1f;你知道如何调整Nginx的http_limit_req_module模块以适应不同的业务需…

Mybatis总结--传参

MyBatis 传递参数&#xff1a;从 java 代码中把参数传递到 mapper.xml 文件 六、一个简单参数&#xff1a; Dao 接口中方法的参数只有一个简单类型&#xff08; java 基本类型和 String &#xff09;&#xff0c; 占位符 #{ 任意字符 } &#xff0c;和方法的参数名无关…

Mac OS 搭建C++开发环境【已解决】

Mac OS 搭建C开发环境 文章目录 Mac OS 搭建C开发环境一、安装命令行工具&#xff1a;二、安装vscode三、安装gcc3.1 安装Homebrew3.2 安装gcc3.3 修改配置 四、更改VSCode默认编译器五、安装gdb六、安装Cmake && git七、编译运行 本地环境&#xff1a; Mac OS Sonoma …