Java学习路线:JUL日志系统(二)使用Properties配置文件

目录

认识properties

使用properties编写日志配置文件


认识properties

之前的学习中,我们学习了使用XML配置文件,但是XML的读取实在有些麻烦。那有没有更简单的方式来配置文件呢?

答案是:使用Properties配置文件

在这里了解properties的主要目的是为了在后面更好地配置日志打印器JUL

properties文件就是直接以.properties结尾的文件

这种文件配置方式很简单,格式为:

配置值=配置值

例如:

name=Test
desc=Description

 这个结构非常像map,等号左边为key,右边为value

同样,我们也可以将properties文件读到map里面

Propertise properties = new Properties();
//这里的propertise就可以当做一个map使用
propertise.load(new FileInputStream("test.properties"));
//取一个properties
properties.get(name);
//另一种取的方法,类似map
properties.getProperties("name","xxx");//如果找到了name的配置,就使用,否则默认使用xxx
//插入一个properties
properties.put("numnber","1");

在这里,Properties类继承了Hashtable,和HashMap不同的是,Hashtable不允许插入的值的value为空

可以使用输出流保存properties文件

properties.store(new FileOutputStream("test"));

其实,我们的系统也有自己的properties文件,可以通过System.getProperties来查看系统的参数:

System.getProperties().forEach((k,v)->System.out.println(k+":"+v));

得到结果:

os.arch:amd64

user.country:CN

java.vm.specification.version:1.8

...

可以得到系统的信息 

使用properties编写日志配置文件

在上一章中:Java学习路线:JUL日志系统(一)日志框架介绍-CSDN博客

我们学习了如何使用日志处理器修改日志的级别等

而使用properties可以直接规定使用的日志处理器和默认日志级别

# rootLogger的默认处理器为:
handlers = java.util.logging.ConsoleHandler
# rootLoggrt的默认日志级别为
.level=CONFIG

那么, 怎么将配置应用到日志中呢?

可以使用一个日志管理器LogManager来配置

LogManager logManager = LogManager.getLogManager();
logManager.readConfiguration(new FileInputStream("test.properties"));

这样就成功将properties中的配置应用到日志系统中了

同样,也可以通过properties修改ConsoleHandler的默认配置:

# 指定默认的日志级别
java.util.logging.ConsoleHandler.level=ALL
//指定默认日志消息格式
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
//指定默认的字符集
java.util.logging.ConsoleHandler.encoding=UTF-8

到底为什么通过设置properties就能改变ConsoleHandler的设置呢?

打开ConsoleHandler的源码,可以发现其实他调用了getProperty方法来读取了配置文件

如果我们没有进行相应的配置,就会自动使用默认值

这也解释了为什么日志处理器默认的日志打印权限是INFO

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

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

相关文章

【数据库】elasticsearch

1、架构 es会为每个索引创建一定数量的主分片和副本分片。 分片(Shard): 将索引数据分割成多个部分,每个部分都是一个独立的索引。 主要目的是实现数据的分布式存储和并行处理,从而提高系统的扩展性和性能。 在创建索…

Qt——常用控件

前言:本篇文章,将分享Qt中常用的,具有代表性的一些控件。 一.按钮类控件 在前边的文章中我们也多次分享过PushButton按钮,但Qt中并非只提供这一种按钮。 在Qt中,QPushButton并非直接继承自QWidget,QAbstr…

硬件基础06 滤波器——无源、有源(含Filter Solutions、Filter Pro、MATLAB Fdatool)

推荐设计RC无源滤波器使用,数字滤波器可以使用MATLAB,有源滤波器使用Filter Pro。 一、Filter Solutions 1、软件资源及安装教程如下 FilterSolutions14.1.rar资源 (1)、双击FS14_1_0.exe进行安装;不要安装到中文路…

js WebAPI黑马笔记(万字速通)

此笔记来自于黑马程序员,pink老师yyds 复习: splice() 方法用于添加或删除数组中的元素。 注意: 这种方法会改变原始数组。 删除数组: splice(起始位置, 删除的个数) 比如:1 let arr [red, green, b…

docker安装低版本的jenkins-2.346.3,在线安装对应版本插件失败的解决方法

提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、网上最多的默认解决方法1、jenkins界面配置清华源2、替换default.json文件 二、解决低版本Jenkins在线安装插件问题1.手动下载插件并导入2.低版本jenkins在…

spark-on-k8s 介绍

spark-on-k8s 介绍 摘要 最近一段时间都在做与spark相关的项目,主要是与最近今年比较火的隐私计算相结合,主要是在机密计算领域使用spark做大数据分析、SQL等业务,从中也了解到了一些spark的知识,现在做一个简单的总结&#xff…

React教程(详细版)

React教程(详细版) 1,简介 1.1 概念 react是一个渲染html界面的一个js库,类似于vue,但是更加灵活,写法也比较像原生js,之前我们写出一个完成的是分为html,js,css&…

鸿蒙开发:自定义一个车牌省份简称键盘

前言 之前针对车牌省份简称键盘,在Android系统中搞过一个,当时使用的是组合View的形式,考虑到最后一个删除按钮单独占两个格子,做了特殊处理,单独设置了权重weight和单独设置了宽度width,既然鸿蒙系统的应…

电脑蓝屏不要慌,一分钟教你如何解决蓝屏问题

目录 一、检查硬件连接 二、更新驱动程序 三、修复操作系统错误 四、使用系统还原 电脑蓝屏是许多计算机用户经常遇到的问题之一。它可能由硬件故障、驱动程序问题、操作系统错误等多种原因引起。当电脑出现蓝屏时,很多人会感到困惑和焦虑。本文将向您介绍一些常见的解决方…

推荐!一些好用的VSCode插件

那些好用的VSCode插件 前言1、Auto Close Tag(自动补全标签)⭐2、Auto Rename Tag(自动更新标签)⭐3、Chinese(简体中文)⭐4、Git History (查看 Git 提交历史)⭐5、GitLens (增强 Git )6、open in browser (快速预览 )⭐7、Vetur ( Vue相关 )⭐8、Beautify ( 美化代码 )9、bac…

任务调度实现

我的后端学习大纲 XXL-JOB大纲 1、什么是任务调度 1.以下面业务场景就需要任务调度来解决问题: 某电商平台需要每天上午10点,下午3点,晚上8点发放一批优惠券某银行系统需要在信用卡到期还款日的前三天进行短信提醒某财务系统需要在每天凌晨0:10分结算前…

【SQL50】day 1

目录 1.可回收且低脂的产品 2.寻找用户推荐人 3.使用唯一标识码替换员工ID 4.产品销售分析 I 5.有趣的电影 6.平均售价 7.每位教师所教授的科目种类的数量 8.平均售价 1.可回收且低脂的产品 # Write your MySQL query statement below select product_id from Products w…

【数据结构与算法】第9课—数据结构之二叉树(链式结构)

文章目录 1. 二叉树的性质2. 链式结构二叉树3. 二叉树链式结构的4种遍历方式4. 二叉树节点个数5. 二叉树的叶子节点个数6. 二叉树第k层节点个数7. 二叉树的高度/深度8. 二叉树查找值为x的节点9. 二叉树的销毁10. 判断是否为完全二叉树11. 二叉树练习题11.1 单值二叉树11.2 相同…

ONLYOFFICE 8.2深度体验:高效协作与卓越性能的完美融合

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ONLYOFFICE 8.2 🔍引言📒1. ONLYOFFICE 产品简介📚2. 功能与特点🍁协作编辑 PDF🍂…

一文带你了解,全国职业院校技能大赛老年护理与保健赛项如何备赛

老年护理与保健,作为2023年全国职业院校技能大赛的新增赛项,紧密贴合党的二十大精神,致力于加速健康与养老产业的蓬勃发展,并深化医养康养结合的服务模式。此赛项不仅承载着立德树人的教育使命,更通过竞赛的引领作用&a…

HT71778 实时音频信号跟踪的18V,15A全集成同步升压转换器

1、特点 实时音频信号跟踪的电源供电 SN 短接地,VIN2.7~4.5V, VouT5V~12V RsN(to GND) 100k, ViN 2.7~8.5V, VouT 9V~15V SN 悬空,VIN 2.7~8.5V, VouT9V~18V 可编程峰值电流:15A 高转换效率: 93%(VIN7.4V, VoUT15.5V, IouT 1.5A) 低关断功耗,关断电流1uA 可调节的开…

二叉树 最大深度(递归)

给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2] 输出…

【Spring IoCDI】路径扫描,DI依赖注入

【路径扫描】 Spring注重路径,约定大于配置 例如,这个路径下,Spring默认会去扫描下【com.baiye.ioc】下面所有类中加了五大注解的路径,不在这个路径下是默认不会去扫描的 即:Spring默认的扫描路径是——启动类所在的目录及其子目…

JavaScript中变量的基础知识(超详细)

1.变量 1.1目标 理解变量是计算机存储数据的容器 变量:变量是计算机用来存储数据的容器(盒子)作用:记录计算机数据的不同状态注意:变量不是数据本身,它们仅仅是一个用于存储数值的容器。可以理解为一个用…

iPhone 17 :全系 120HZ,等等党终于等到了

苹果首次在 iPhone 13 Pro 上采用120 HZ 自适应高刷,通过屏幕体验,来拉开 Pro 和标准版的定位差距,这个策略持续到 iPhone 16。 不过从 iPhone 17 开始,情况要开始转变了。 根据外媒ETNews 的透露,苹果明年推出的四款…