日志文件之间关系和介绍及应用
1.常用日志框架代码举例
Log4j:
Log4j是Java中广泛使用的日志框架之一。它提供了灵活的配置选项和丰富的功能,支持日志级别、日志输出目标等。Log4j有1.x版本和2.x版本,其中Log4j 2.x是对1.x的升级和扩展。
Logback:
Logback是由Log4j创始人设计的Log4j的后继者,也是一个非常流行的Java日志框架。它具有高性能和灵活的配置选项,可以与Log4j配置文件兼容,支持异步日志记录。
java.util.logging:
java.util.logging(JUL)是Java SE平台自带的标准日志框架,也被称为JDK日志。它提供了基本的日志功能,具有简单的API和默认的配置,适用于简单的日志需求。
SLF4J:
Simple Logging Facade for Java(SLF4J)是一个抽象层,允许开发人员以统一的方式访问不同的底层日志框架,如Log4j、Logback等。SLF4J本身并不提供实际的日志实现,而是在运行时绑定到特定的日志框架。
除了以上列举的框架,还有许多其他的日志框架可供选择,如Apache Commons Logging、TinyLog、LogStash等。选择适合项目需求、易于集成和使用的日志框架是很重要的,可以根据项目的规模、性能需求和配置灵活性来做出选择。
2.log4j.properties和log4j2.xml 之间关系
log4j.properties和log4j2.xml是用于配置Log4j和Log4j 2的日志框架的文件,它们有以下关系:格式:log4j.properties使用基于键值对的属性格式进行配置,而log4j2.xml使用XML格式进行配置。这是它们之间最明显的区别。版本:log4j.properties是用于Log4j 1.x版本的配置文件,而log4j2.xml是用于Log4j 2.x版本的配置文件。Log4j 2是Log4j的升级版,提供了更强大和灵活的功能。语法:由于使用不同的格式,log4j.properties和log4j2.xml具有不同的语法。在log4j.properties中,您使用键值对指定日志器(Logger)、日志级别(Level)和输出目标(Appender)等信息。而在log4j2.xml中,您使用XML元素和属性来定义日志配置。功能:log4j2.xml相对于log4j.properties提供了更丰富的功能和更高级的配置选项。Log4j 2引入了许多新功能,如异步日志记录、插件系统、自定义过滤器等。log4j2.xml可以更好地支持这些新功能,并提供更灵活的配置能力。总的来说,log4j.properties是用于配置Log4j 1.x的简单属性文件,而log4j2.xml是用于配置Log4j 2.x的更强大和灵活的XML配置文件。如果您使用Log4j 2,请使用log4j2.xml进行配置。如果您仍在使用Log4j 1.x,那么请使用log4j.properties进行配置。
3.设置日志级别的目的
设置日志级别的目的是控制在日志系统中输出哪些级别的日志消息。该设置有以下几个目的:过滤日志信息:通过设置日志级别,可以过滤掉低于所设定级别的日志消息,只输出符合设定级别及以上级别的日志信息。这样可以避免大量不必要的日志输出,减少日志文件的大小,提高日志的可读性和可用性。调试和故障排查:在开发和调试过程中,可以将日志级别设置为更低的级别(如DEBUG或TRACE),以便详细记录系统运行的各个细节和状态。这对于跟踪问题、定位故障和进行代码调试非常有帮助。生产环境控制:在生产环境中,可以将日志级别设置为较高的级别(如INFO或WARN),以记录关键和重要的信息,例如系统启动、错误和警告信息。这有助于监测和分析系统的运行情况,并及时发现和解决潜在的问题。通过设置适当的日志级别,可以根据需求平衡日志数量和详细程度,确保日志信息的有效记录和管理。根据具体的场景和要求,可以灵活地设置不同级别的日志,以满足开发、调试和生产环境中的需求。
4.java代码为什么源码中错误日志打印用的 java.util.logging
在Java源码中使用java.util.logging框架进行错误日志打印的原因有以下几点:标准化:java.util.logging是Java标准库中内置的日志框架,不需要额外的依赖。这使得它成为Java开发中最常见和最常用的日志框架之一。简单易用:java.util.logging提供了简单易用的API,可以方便地进行日志记录和配置。它提供了Logger类来创建和管理日志记录器,并通过Handler类来定义日志消息的输出目标。集成性:java.util.logging集成到Java平台中,可以与其他Java API和工具无缝配合使用。例如,在Java EE(现在的Jakarta EE)应用程序中,可以使用内置的java.util.logging框架来记录错误日志,并且可以通过配置文件或编程方式对其进行配置和管理。可配置性:java.util.logging提供了灵活的配置选项,可以通过更改日志配置文件(logging.properties)中的参数来调整日志记录的行为。这包括设置日志级别、定义日志输出位置、选择日志格式等。尽管java.util.logging是Java标准库中的日志框架,但也出现了许多第三方日志框架(如Log4j、SLF4J等),它们提供更强大、更灵活和更易用的功能。使用哪个日志框架取决于具体的需求和偏好。
5.打印日志级别什么意思
打印日志级别是指在日志系统中记录和输出日志消息时,根据其重要性或优先级进行分类和标记的一个概念。不同的日志消息可以被分为不同的级别,以便在日志输出中进行过滤、筛选或分析。常见的日志级别包括(从低到高):TRACE:跟踪级别最低,通常用于追踪程序执行的详细信息,例如方法调用、变量的值等。DEBUG:调试级别,用于记录调试信息,可以帮助开发人员进行故障排除、代码调试等。INFO:信息级别,用于记录正常操作的关键信息,如应用程序的启动、关键功能的执行等。WARN:警告级别,表示可能存在潜在的问题或异常情况,需要引起注意但不会导致程序错误。ERROR:错误级别,表示出现了错误或异常情况,可能会导致程序的异常终止或功能失效。FATAL:严重错误级别,表示非常严重的错误,一般会导致应用程序的崩溃或无法恢复。不同的日志系统和框架可能会有不同的日志级别名称和数量,但通常遵循类似的原则。通过在代码中设置日志级别,可以控制打印哪些级别的日志消息。例如,将日志级别设置为 DEBUG,则会打印 DEBUG、INFO、WARN、ERROR 和 FATAL 级别的日志消息,而不会打印 TRACE 级别的日志消息。打印日志级别对于应用程序的开发、调试和故障排除非常重要,可以帮助开发人员了解应用程序的运行情况、定位问题,并在生产环境中监控和记录关键的操作和错误信息。
6.如何区分项目文件是否在classpath
要确定项目文件是否在类路径(classpath)中,可以遵循以下方法:查看项目结构:检查项目的文件夹结构和位置。通常,项目的源代码、资源文件和其他相关文件位于特定的目录中。如果文件位于源代码目录(例如src/main/java或src/main/resources)或类路径下的目录(例如target/classes),那么它在类路径上。检查构建工具配置:如果项目使用构建工具(如 Maven、Gradle 等),查看构建工具的配置文件。这些配置文件指定了项目的构建和依赖管理规则。检查构建文件(例如 pom.xml 或 build.gradle)中的类路径设置,看是否包含了项目文件所在的路径或目录。运行时检查类路径:在项目中运行代码,并输出类路径信息。可以通过以下方式在代码中输出类路径:System.out.println(System.getProperty("java.class.path"));
运行代码后,查看输出结果中是否包含了项目文件所在的路径或目录。使用类加载器 API:在代码中使用类加载器 API 来获取类路径资源的 URL 或 InputStream,并检查是否能够成功获取文件资源。例如:URL resourceUrl = getClass().getClassLoader().getResource("path/to/file");
InputStream inputStream = getClass().getClassLoader().getResourceAsStream("path/to/file");
如果获取到了文件资源,说明文件在类路径上;否则,表示文件不在类路径上。请注意,类路径的具体设置和结构取决于项目的配置和构建方式。因此,以上方法可能需要根据项目的实际情况进行适当调整。
7.常用日志框架代码举例
7.1 java.util.logging (JUL):
import java.util.logging.Logger;public class MyClass {private static final Logger logger = Logger.getLogger(MyClass.class.getName());public void myMethod() {logger.finest("Finest message");logger.finer("Finer message");logger.fine("Fine message");logger.info("Info message");logger.warning("Warning message");logger.severe("Severe message");String name = "Charlie";int age = 40;logger.info("User {} is {} years old", new Object[]{name, age});try {// some code} catch (Exception e) {logger.severe("An error occurred");e.printStackTrace();}}
}
7.2Log4j 2.x:
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;public class MyClass {private static final Logger logger = LogManager.getLogger(MyClass.class);public void myMethod() {// 使用不同的日志级别输出日志logger.trace("Trace message");logger.debug("Debug message");logger.info("Info message");logger.warn("Warning message");logger.error("Error message");logger.fatal("Fatal message");// 参数化日志String name = "Alice";int age = 30;logger.info("User {} is {} years old", name, age);// 异常日志try {// some code} catch (Exception e) {logger.error("An error occurred", e);}}
}
7.3Logback:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;public class MyClass {private static final Logger logger = LoggerFactory.getLogger(MyClass.class);public void myMethod() {logger.trace("Trace message");logger.debug("Debug message");logger.info("Info message");logger.warn("Warning message");logger.error("Error message");String name = "Bob";int age = 35;logger.info("User {} is {} years old", name, age);try {// some code} catch (Exception e) {logger.error("An error occurred", e);}}
}
相关文章:

日志文件之间关系和介绍及应用
1.常用日志框架代码举例 Log4j: Log4j是Java中广泛使用的日志框架之一。它提供了灵活的配置选项和丰富的功能,支持日志级别、日志输出目标等。Log4j有1.x版本和2.x版本,其中Log4j 2.x是对1.x的升级和扩展。 Logback: Logback是由Log4j创始人设计的Log4…...

mac电脑屏幕录制Berrycast Mac屏幕录制软件
Berrycast是一款为Mac设计的优秀屏幕录制软件,它让屏幕录制变得简单而高效。以下是Berrycast的一些主要特点: 简单的用户界面:Berrycast拥有直观和简洁的用户界面,使得用户可以轻松上手。高质量的视频输出:Berrycast能…...

机器学习笔记之最优化理论与方法(一)最优化问题概述
机器学习笔记之最优化理论与方法——最优化问题概述 引言什么是最优化问题最优化问题的基本形式最优化问题的分类各分类最优化问题的数学表达约束优化VS无约束优化线性规划VS非线性规划连续优化VS离散优化单目标优化VS多目标优化 引言 从本节开始,将对最优化理论与…...

【ES5新特性一】 严格模式语法变化、全局的JSON对象、编码和解码的方法
前言 ECMAScript 和 JavaScript 的关系 一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? 要讲清楚这个问题,需要回顾历史。1996 年 11 月,JavaScript 的创造者 Netscape 公司,决定将 JavaScript 提交给标准…...

Java【手撕滑动窗口】LeetCode 3. “无重复字符的最长子串“, 图文详解思路分析 + 代码
文章目录 前言一、长度最小子数组1, 题目2, 思路分析3, 代码 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, 链…...

学习哈哈哈哈
# 零、学习计划 * 数据库相关 * 索引 * [我以为我对数据库索引很了解,直到我遇到了阿里面试官 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/107487215) * [给我一分钟,让你彻底明白MySQL聚簇索引和非聚簇索引 - 知乎 (zhihu.com)](ht…...

05-基础例程5
基础例程5 1、超声波测距 实验介绍 HC-SR04超声波传感器是一款测量距离的传感器。其原理是利用声波在遇到障碍物反射接收结合声波在空气中传播的速度计算的得出。 外观 管脚功能的定义 VCC:供电电源;Trig:触发信号;Echo&a…...

双基证券:预计未来还会有更多政策来吸引增量资金
双基证券表示,8月27日,活泼资本商场五大方针出台:证券交易印花税折半征收;阶段性收紧IPO节奏;上市房企再融资不受破发、破净和亏本限制;标准控股股东与实际操控人减持行为;融资保证金最低份额由…...

前端:html实现页面切换、顶部标签栏,类似于浏览器的顶部标签栏(完整版)
效果 代码 <!DOCTYPE html> <html><head><style>/* 左侧超链接列表 */.link {display: block;padding: 8px;background-color: #f2f2f2;cursor: pointer;}/* 顶部标签栏 */#tabsContainer {width:98%;display: flex;align-items: center;overflow-x: …...

强化自主可控,润开鸿发布基于RISC-V架构的开源鸿蒙终端新品
2023 RISC-V中国峰会于8月23日至25日在北京召开,峰会以“RISC-V生态共建”为主题,结合当下全球新形势,把握全球新时机,呈现RISC-V全球新观点、新趋势。本次大会邀请了RISC-V国际基金会、业界专家、企业代表及社区伙伴等共同探讨RISC-V发展趋势与机遇,吸引超过百余家业界企业、高…...

软件设计师知识点·1
控制器: (1)指令寄存器(IR) : CPU执行一条指令时,从内存储器取到缓冲寄存器中,再送入IR暂存; (2)程序计数器(PC): 将要执行的下一条指令的地址; (3)地址寄存器(IR): 当前CPU所访问的内存单元地址; (4)指令译码器(ID): 对指令中的操作码字段进行分析解释; 多核CPU可以满足用户…...

修改Jupyter Notebook默认打开路径
这里我是重新下载的anaconda,打开Jupyter之后是默认在C盘的一个路径的,现在我们就来修改一下它的一个默认打开路径,这样在我们后续学习过程中,可以将ipynb后缀的文件放在这个目录下就能查看了。 1、先打开Anaconda Prompt&#x…...

经典卷积网络
目录 一、经典神经网络出现的时间线编辑 二、LeNet 三、AlexNet 四、VGGNet 五、InceptionNet 六、ResNet 总结: 一、经典神经网络出现的时间线 二、LeNet 背景:LeNet由Yann LeCun于1998年提出,卷积网络开篇之作。 解释࿱…...

react+koa+vite前后端模拟jwt鉴权过程
路由组件(生成token) const Router require(koa/router) const jwt require(jsonwebtoken); const router new Router()const mockDbUserInfo [{nickname: xxxliu,username: Tom,password: 123456,icon: url1},{nickname: xxx,username: John,passw…...

VK1616是LED显示控制驱动电路/LED驱动IC、数显驱动芯片、数码管驱动芯片
产品品牌:永嘉微电/VINKA 产品型号:VK1616 封装形式:SOP16 产品年份:新年份 概述:VK1616是一种数码管或点阵LED驱动控制专用芯片,内部集成有3线串行接口、数据锁存器、LED 驱动等电路。SEG脚接LED阳极&a…...

开箱报告,Simulink Toolbox库模块使用指南(五)——S-Fuction模块(C MEX S-Function)
文章目录 前言 C MEX S-Function 算法原理 原始信号创建 编写S函数 仿真验证 Tips 分析和应用 总结 前言 见《开箱报告,Simulink Toolbox库模块使用指南(一)——powergui模块》 见《开箱报告,Simulink Toolbox库模块使用…...

摄像头的调用和视频识别
CV_tutorial3 摄像头调用实时播放保存视频 运动目标识别帧差法背景减除法 摄像头调用 创建视频捕捉对象:cv2.VideoCapture() 参数为视频设备的索引号,就一个摄像投的话写0默认; 或者是指定要读取视频的路径。 实时播放 import cv2 import …...

多通道分离与合并
目录 1.多通道分离split() 2.多通道合并merge() 3.Android JNI demo 1.多通道分离split() void cv::split ( InputArray m, OutputArrayOfArrays mv ) m:待分离的多通道图像。 mv:分离后的单通道图像,为向量vector形式。 2.多通道合并merge…...

JOJO的奇妙冒险
JOJO,我不想再做人了。 推荐一部动漫 JOJO的奇妙冒险 荒木飞吕彦创作的漫画 《JOJO的奇妙冒险》是由日本漫画家荒木飞吕彦所著漫画。漫画于1987年至2004年在集英社的少年漫画杂志少年JUMP上连载(1987年12号刊-2004年47号刊),2005年后在集英…...

LeetCode56.合并区间
这道题我想了一会儿,实在想不到比较好的算法,只能硬着头皮写了,然后不断的debug,经过我不懈的努力,最后还是AC,不过效率确实低。 我就是按照最直接的方法来,先把intervals数组按照第一个数star…...

【内推码:NTAMW6c】 MAXIEYE智驾科技2024校招启动啦
MAXIEYE智驾科技2024校招启动啦【内推码:NTAMW6c】 【招聘岗位超多!!公司食堂好吃!!】 算法类:感知算法工程师、SLAM算法工程师、规划控制算法工程师、目标及控制算法工程师、后处理算法工程师 软件类&a…...

Python框架【模板继承 、继承模板实战、类视图 、类视图的好处 、类视图使用场景、基于调度方法的类视图】(四)
👏作者简介:大家好,我是爱敲代码的小王,CSDN博客博主,Python小白 📕系列专栏:python入门到实战、Python爬虫开发、Python办公自动化、Python数据分析、Python前后端开发 📧如果文章知识点有错误…...

对于前端模块化的理解与总结(很全乎)
目录 模块化的好处 模块化的commonJS导入导出 暴露(导出)模块:module.exports value或exports.xxx value 导入模块——使用 es6模块化 方法一逐个导出 方法二默认导出 方法三 方法四 方法五 export 和import 同时存在 多个文件导出到一个文件后在相关文件…...

NewStarCTF 2022 web方向题解 wp
----------WEEK1---------- BUU NewStarCTF 公开赛赛道 WEEK1 [NotPHP] 先看题目,要传参加绕过。 分析一下代码:首先get一个datadata://test/plain,Wel…。然后key1和2用数组可以绕过。num2077a可以绕过弱类型。eval()中的php语句被#注释了,…...

WebGL矩阵变换库
目录 矩阵变换库: Matrix4对象所支持的方法和属性如表所示: 方法属性规范: 虽然平移、旋转、缩放等变换操作都可以用一个44的矩阵表示,但是在写WebGL程序的时候,手动计算每个矩阵很耗费时间。为了简化编程…...

block层:8. deadline调度器
deadline 源码基于5.10 0. 私有数据 struct deadline_data {/** run time data*//** requests (deadline_rq s) are present on both sort_list and fifo_list*/struct rb_root sort_list[2];struct list_head fifo_list[2];/** next in sort order. read, write or both ar…...

DTO,VO,PO的意义与他们之间的转换
DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负…...

Java 集合框架2
一、关于set接口的常用类 1.HashSet类 用来处理无序的单列数据,没有重复的元素,重复的元素算一个 i.构造方法 //HashSet类是set接口的子类,是无序的单列数据,没有重复的元素,重复的元素算一个 //HashSet的构造方法 //HashSet() …...

2024王道408数据结构P144 T16
2024王道408数据结构P144 T16 思考过程 首先看题目,要求我们把二叉树的叶子结点求出来并且用链表的方式存储,链接时用叶结点的右指针来存放单链表指针。我们很清楚可以看出来能用中序遍历递归的方式实现,因为第一个叶子结点在整棵树的最左下…...

【ARM Coresight 系列文章 22 -- linux frace 与 trace-cmd】
文章目录 ftrace 介绍trace-cmd 介绍trace-cmd 常用跟踪事件ftrace 与 trace-cmd 关系ftrace 编译依赖 ftrace 介绍 ftrace 是 Linux 内核中的一个跟踪工具,主要用于帮助开发者分析和调试内核的行为。ftrace 的名字来源于 “function tracer”,它最初是…...