Java日志 - JUL

一、JUL学习总结

(1)总结

        JDK自带的日志系统中已经为我们创建了一个顶层的RootLogger,可以针对这个顶层的RootLogger设置多个Handler(如ConsoleHandler, FileHandler等),如果想在控制台输出debug级别以上的日志,在文件中输出info级别以上的日志,那就针对各个Handler设置不同的日志级别(当然也可以设置不同的格式化器Formatter)

(2)配置文件

        说明:JDK自带的日志配置文件在 $JAVA_HOME\jre\lib\logging.properties ,可以把这个默认的日志文件拷贝出来,修改后放到自己的项目中,然后在项目中读取自定义的配置文件信息。

#RootLogger使用的处理器,在获取RootLogger对象时进行的设置
#默认的情况下,下述配置的是控制台的处理器,只能往控制台上进行输出操作
#如果想要添加其他的处理器,在当前处理器类后面通过以逗号的形式进行分隔,可以添加多个处理器
handlers= java.util.logging.ConsoleHandler,java.util.logging.FileHandler#RootLogger的日志级别
#默认的情况下,这是全局的日志级别,如果不手动配置其他的日志级别
#则默认输出下述配置的级别以及更高的级别
# JDK自带的日志级别有:SERVER  WARNING  INFO CONFIG  FINE  FINER  FINEST  (ALL  OFF)
.level= ALL# 输出日志文件的路径
# %h:用户目录
# %u:序号,从0开始
#java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.pattern = D:/a_myFile/workspace/personal/Java/log/logs/java%u.log
#输出日志文件的限制(50000字节)
java.util.logging.FileHandler.limit = 50000
#设置日志文件的数量
java.util.logging.FileHandler.count = 1
#输出日志的格式,默认是以XML的方式进行的输出
#java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
# 记录到文件的日志级别为INFO及以上级别
java.util.logging.FileHandler.level = INFO
# 追加日志
java.util.logging.FileHandler.append = true# ConsoleHandler设置
# 记录到控制台的日志级别为CONFIG及以上级别
java.util.logging.ConsoleHandler.level = CONFIG
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

(3)在代码中读取自定义的配置文件

        说明:此处使用使用Maven创建项目,配置文件存放在resources目录下

package factory;import java.io.IOException;
import java.io.InputStream;
import java.util.logging.LogManager;
import java.util.logging.Logger;public class LogFactory {public static Logger getMyLogger(String name) {ClassLoader classLoader = LogFactory.class.getClassLoader();InputStream inputStream = classLoader.getResourceAsStream("logging.properties");LogManager logManager = LogManager.getLogManager();try {logManager.readConfiguration(inputStream);} catch (IOException e) {throw new RuntimeException(e);}return Logger.getLogger(name);}
}

(4)在代码中记录日志

package jul;import factory.LogFactory;
import jul.p1.Test1;
import jul.p2.Test2;import java.util.logging.Logger;public class JULTest1 {public static final Logger logger = LogFactory.getMyLogger("jul.JULTest1");public static void main(String[] args) {test1();}public static void test1(){logger.severe("severe");logger.warning("waring");logger.info("info");logger.config("config");logger.fine("fine");logger.finer("finer");logger.finest("finest");}
}

(4)日志记录结果

(4.1)控制台输出如下

(4.2)文件中的输入如下

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

还不到6个月,GPTs黄了

相比起来,人们还不如使用一个足够强大、灵活且通用的AI助手来满足各类复杂需求。更严重的是一些独立GPTs显露出的安全隐患。除此之外,最大的问题在于OpenAI模糊不清的货币化政策。 文章正文 上周,不少人发现微软官网忽然更新了一条“GPT Bu…

AI论文降重:一键操作,让你的论文查重率瞬间下降

高查重率是许多毕业生的困扰。通常,高查重率源于过度引用未经修改的参考资料和格式错误。传统的降重方法,如修改文本和增添原创内容,虽必要但耗时且成效不一。 鉴于此,应用AI工具进行AIGC降重成为了一个高效的解决方案。这些工具…

聊聊 golang 中 channel

1、引言 Do not communicate by sharing memory; instead, share memory by communicating Golang 的并发哲学是“不要通过共享内存进行通信,而要通过通信来共享内存”,提倡通过 channel 进行 goroutine 之间的数据传递和同步,而不是通过共享…

Embedding是什么?为什么重要?

本文为 Simon Willison 在 PyBay 上发表的演讲视频的文字改进版 原文链接: https://simonwillison.net/2023/Oct/23/embeddings/ 演讲视频链接: https://youtu.be/ArnMdc-ICCM Embedding 是一个非常巧妙的技术,但常常和一堆令人生畏的术…

Structured Steaming结构化流详解:大案例解析(第12天)

系列文章目录 一、结构化流介绍(了解) 二、结构化流的编程模型(掌握) 三、Spark 和 Kafka 整合,流处理,批处理演示(掌握) 四、物联网数据分析案例(熟悉) 文章…

无线领夹麦克风怎么挑选,能让声音变好听的领夹麦推荐大全

近年来,随着直播销售和个人视频日志(Vlog)的流行,自媒体内容创作已经成为一种文化现象。这一现象不仅改变了人们获取信息的方式,也极大地推动了相关音频设备的发展。无线领夹麦克风,以其轻巧的设计和出色的…

真实评测:可道云teamOS文件上传功能丝滑到爱不释手

对于每日沉浸在图片与视频海洋中的媒体工作者而言,与海量的多媒体文件打交道几乎成了家常便饭。 文件的上传和存储,对他们而言,不仅仅是工作中的一个环节,更像是将一天的辛勤与付出妥善安置的仪式。无论是突发现场的精彩瞬间&am…

做AI搜索的55条建议,务必收藏

目前大模型产品落地真正形成共识的只有AI搜索,自从Perplexity发起了对搜索霸主谷歌的强势挑战,国内外大大小小做搜索的厂商,都推出了内置于原搜索结果的AI总结功能,譬如谷歌的AI Overviews、微软的new bing、百度的AI伙伴、360的A…

ubuntu 18.04 server源码编译安装freeswitch 1.10.7支持音视频通话、收发短信——筑梦之路

软件版本说明 ubuntu版本18.04:https://releases.ubuntu.com/18.04.6/ubuntu-18.04.6-live-server-amd64.iso freeswitch 版本1.10.7:https://files.freeswitch.org/freeswitch-releases/freeswitch-1.10.7.-release.tar.gz spandsp包:https:…

C++初学者指南第一步---14.函数调用机制

C初学者指南第一步—14.函数调用机制 文章目录 C初学者指南第一步---14.函数调用机制1.记住:内存的结构2.函数调用是如何工作的3. 不要引用局部变量4. 常见编译器优化5. Inlining内联 1.记住:内存的结构 堆(自由存储) 用于动态存…

Qt 学习(一) addressbook

Qt Demo: addressbook (1)创建项目:选择不创建界面,即UI,此时会自动生成的文件如图所示: QApplication: MainWindow 继承自 QMainWindow,根据需要设计的界面样式。 (2)确定MainWindow 的成员变量 首先&…

告别模糊时代,扫描全能王带来清晰世界

模糊碑文引发的思考 上个月中旬去洛阳拜访了著名的龙门石窟,本就对碑文和文字图画感兴趣的我们,准备好好欣赏一下龙门石窟的历史文化古迹。到了地方之后,我发现石窟的高度和宽度远远超出了想象,正因如此,拍出来的文字…

计算机网络之数据通信原理

1.通信系统的基本组成 信源:信息的发出者; 信宿:信息的接收者; 载体:信息的传送通道; 变换器:将信息变换成载体上可传输的信号; 反变换器:将载体上传输的信号变换成信…

【启明智显技术分享】MOEDL3芯片通用接口如CAN、I2S、I2C、SPI、UART、USB、emac的介绍和比较

启明智显MODEL3芯片提供的通用接口包括CAN、I2S、I2C、SPI、UART、USB和emac,每种接口都有其独特的功能和应用场景。 以下是这些接口的介绍和比较: CAN接口 功能: 支持CAN2.0A和CAN2.0B协议。支持11位标识符(标准格式&#xf…

已解决javax.security.auth.DestroyFailedException:在尝试销毁某个对象时失败的正确解决方法,亲测有效!!!

已解决javax.security.auth.DestroyFailedException:在尝试销毁某个对象时失败的正确解决方法,亲测有效!!! 目录 问题分析 报错原因 解决思路 解决方法 检查对象状态 确认权限设置 检查资源锁定情况 修正实现…

栈,ASCII编码

栈 LinkedList stack new LinkedList<>(); int i 0; while (i < s.length()) { char c s.charAt(i); if (c <) {if (stack.isEmpty()) {i;continue;}stack.removeLast(); //从栈的末尾移除一个元素} else {stack.addLast(c); //压入栈的末尾栈是只允许在一端…

批量邮件推送的最佳策略?如何个性化营销?

批量邮件推送有哪些高效工具&#xff1f;怎么评估邮件推送效果&#xff1f; 通过有效的批量邮件推送&#xff0c;可以提升品牌知名度、增加客户参与度&#xff0c;并最终促进销售。AoKSend将探讨批量邮件推送的最佳策略&#xff0c;帮助您在复杂的邮件营销环境中脱颖而出。 批…

5个顶级开源Agent框架,你必须知道!

进入2024年&#xff0c;人工智能的发展已经达到了前所未有的高度&#xff0c;尤其是在Agent框架这一领域&#xff0c;出现了几个引人注目的技术成果。这些框架在智能规划、用户体验增强、记忆处理、以及大型模型调用等方面有着卓越表现&#xff0c;对AI界的未来发展提供了值得期…

【分布式文件系统HDFS】文件操作基本命令的使用

目录 一、按照下述要求写出相应的文件操作命令&#xff0c;执行并观察结果 1. 新建目录 1.1 在本地文件系统按要求创建如下的文件夹 1.2 在HDFS文件系统按要求创建如下的文件夹 2. 编辑文件test1.txt&#xff0c;放入本地文件夹 /opt/user/myfile 3. 使用moveFromLocal命令…

IT入门知识第八部分《云计算》(8/10)

目录 云计算&#xff1a;现代技术的新篇章 1. 云计算基础 1.1 云计算的起源和发展 云计算的早期概念 云计算的发展历程 1.2 云计算的核心特点 按需自助服务 广泛的网络访问 资源池化 快速弹性 按使用量付费 1.3 云计算的优势和挑战 成本效益 灵活性和可扩展性 维…