ava开发从入门到精通(一):Java日志

目录:

Slf4j
Log4j
LogBack
ELK
1、Slf4j
slf4j 的全称是 Simple Loging Facade For Java,即它仅仅是一个为 Java 程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如 JDBC 一样,只是一种规则而已。所以单独的 slf4j 是不能工作的,必须搭配其他具体的日志实现方案,比如 apache 的 org.apache.log4j.Logger,jdk 自带的java.util.logging.Logger 等。

简单语法
SLF4J 不及 Log4J 使用普遍,因为许多开发者熟悉 Log4J 而不知道 SLF4J,或不关注 SLF4J 而坚持使用 Log4J。我么先看下 Log4J 示例:

Logger.debug("Hello " + name);
由于字符串拼接的问题,使用以上语句会先拼接字符串,再根据当前级别是否低于 debug 决定是否输出本条日志,即使不输出日志,字符串拼接操作也会执行,所以许多公司强制使用下面的语句,这样只有当前处于 DEBUG 级别时才会执行字符串拼接:

if (logger.isDebugEnabled()) {
LOGGER.debug(“Hello ” + name);
}
它避免了字符串拼接问题,但有点太繁琐了是不是?相对地,SLF4J提供下面这样简单的语法:

LOGGER.debug(“Hello {}”, name);
它的形式类似第一条示例,而又没有字符串拼接问题,也不像第二条那样繁琐。

日志等级 Level:
Slf4j 有四个级别的 log level 可供选择,级别从上到下由低到高,优先级高的将被打印出来。
Debug:简单来说,对程序调试有利的信息都可以debug输出
info:对用户有用的信息
warn:可能会导致错误的信息
error:顾名思义,发生错误的地方
2、Log4j
Log4j 是 Apache 的一个开源项目,通过使用 Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI 组件,甚至是套接口服务器、NT 的事件记录器、UNIX Syslog 守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

Log4j 由三个重要的组成构成:

日志记录器Logger:控制要启用或禁用哪些日志记录语句,并对日志信息进行级别限制。
输出端Appenders : 指定了日志将打印到控制台还是文件中。
日志格式化器Layout : 控制日志信息的显示格式。
Log4j 中将要输出的 Log 信息定义了 5 种级别:依次为 DEBUG、INFO、WARN、ERROR 和 FATAL,当输出时,只有级别高过配置中规定的级别的信息才能真正的输出,这样就很方便的来配置不同情况下要输出的内容,而不需要更改代码。

3、LogBack
Logback 是一个 Java 领域的日志框架。它被认为是 Log4J 的继承人。

Logback 主要由三个模块组成:

logback-core 是其它模块的基础设施,其它模块基于它构建,显然,logback-core 提供了一些关键的通用机制。
logback-classic 的地位和作用等同于 Log4J,它也被认为是 Log4J 的一个改进版,并且它实现了简单日志门面 SLF4J。
logback-access 主要作为一个与 Servlet 容器交互的模块,比如说 tomcat 或者 jetty,提供一些与HTTP 访问相关的功能。

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

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

相关文章

解码人工智能的幽默:理解其背后的误解与挑战

✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…

个人职业规划的制定方法

在竞争激烈的职场环境中,一个明确的职业规划对于个人发展至关重要。本文将探讨我的个人职场规划,包括短期和长期目标,以及实现这些目标所需的策略和行动。 一、自我评估 1.1 职业兴趣:我对市场营销和数据分析领域充满热情&#xf…

C# 面向对象

在 C# 中,面向对象编程(Object Oriented Programming,OOP)是一种编程范式,它将软件系统分解为多个相互关联的对象,每个对象都具有自己的属性和行为。下面是一些 C# 中面向对象编程的基本概念和特性&#xf…

Day36:安全开发-JavaEE应用第三方组件Log4j日志FastJson序列化JNDI注入

目录 Java-项目管理-工具配置 Java-三方组件-Log4J&JNDI Java-三方组件-FastJson&反射 思维导图 Java知识点: 功能:数据库操作,文件操作,序列化数据,身份验证,框架开发,第三方库使用…

VB 短发送系统 VB开启系统服务-150-(代码+程序说明)

转载地址: http://www.3q2008.com/soft/search.asp?keyword150 VB程序作为服务,定期的将库里的数据更新,当然VB写服务程序,服务的是导数据,里面有很强的数据关系 做了几个ASP页面 供他们存储数据 添加信息界面 (网页) 数据库 (发送表sendqu…

day41 动态规划part3

343. 整数拆分 中等 给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k > 2 ),并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 但是dp[0] 和 dp[1]为什么是0值得讨论,或者说不用讨论,压根…

log 查询

zgrep -a xxx folder_name/*gz 查询folder_name 文件下 以gz结果的压缩文件中包含 xxx 关键字的 数据

加密与安全_PGP、OpenPGP和GPG加密通信协议

文章目录 PGPOpenPGPGPG工作原理工作流程用途案例说明过程 代码实现pom依赖PgpEncryptionUtilPgpDecryptionUtilCommonUtilsPgpEncryptionTest 小结 PGP PGP (Pretty Good Privacy) 是一种加密通信协议,用于保护电子邮件和文件的安全性和隐私。它通过使用加密、数字…

uni-app开发特点和开发流程

uni-app是一个基于Vue.js框架的跨平台应用开发框架,通过一套代码可以同时运行在多个平台上,包括iOS、Android、H5等。它采用了基于流布局的页面渲染机制,可以自动适配不同平台的屏幕尺寸和分辨率。uniapp官网:https://uniapp.dclo…

qt 汉字输出 中文输出 显示乱码 qDebug() 乱码 解决

要正确显示汉字,必须要先了解计算机文字编码相关知识,参考:unicode ucs2 utf16 utf8 ansi GBK GB2312 互转 及 渲染_ucs2编码转换-CSDN博客 1、汉字输出到 应用程序输出面板 qt 自定义的输出类qDebug() 、QDebug对象、QMessageLogger默认输…

用眼精星票证识别系统,轻松将户口本转成结构化Excel

眼精星票证识别系统是一款革命性的软件,它以高度的精准性和效率为特点,为用户提供了一个简单便捷的工具,将纸质户口本转化为结构化数据。这一创新技术不仅改变了传统数据录入的方式,还大大提高了工作效率,为用户节省了…

【区块链】讲解

区块链 区块链是一种分布式数据库技术,其主要特点是去中心化和不可篡改性。这种技术最初是为了支持比特币这种数字货币而开发的,但如今已经被广泛地应用在其他许多领域。 以下是对区块链技术的详细讲解: 去中心化: 传统的数据库如银行记录或…

从SPI协议学习PX4源码

一、SPI类 SPI类的参数:设备名称,devname设备节点名称,总线,device片选信号线,SPI模式,时钟频率,中断。SPI类继承VDev类。 SPI协议在spi.cpp文件中,涉及到了cdev和device的操作。c…

pg_dump导出数据时报错no PostgreSQL user name specified in startup packet

pg_dump版本号:14.9 远程pgsql版本:12.13 (通过select version()语句查看) 报错信息: no PostgreSQL user name specified in startup packet pg_dump(72846,0x1dc7b6100) malloc: *** error for object 0x6f: pointer being freed was no…

Buildroot 之二 详解构建架构、流程、external tree、示例

构建系统 Buildroot 中的构建系统使用的是从 Linux Kernel(4.17-rc2) 中移植的 Kconfig(配置) + Makefile & Kbuild(编译)这套构建系统,移植后的源码位于 support/kconfig/ 目录下。Buildroot 本身是一个构建系统,与直接编译源码不同,因此,它对这套系统进行了比较…

web服务器集群试题

服务器IP地址规划:client:12.0.0.12/24,网关服务器:ens36:12.0.0.1/24、ens33:192.168.11.1/24;Web1:192.168.11.10/24,Web2:192.168.11.11/24,Nginx&#xf…

Unity游戏中数据结构的使用(c#)

作为游戏开发者,我们不断处理大量数据——无论是玩家库存、敌人人工智能还是世界状态。有效组织和访问这些数据对于优化性能和创建沉浸式游戏体验至关重要。这就是数据结构发挥作用的地方! 数据结构为我们提供了有效存储、组织和操作数据的强大工具。通过利用 Unity 中的数据…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Stack容器组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Stack容器组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Stack容器组件 堆叠容器,子组件按照顺序依次入栈,后一…

Yarn:Node.js依赖管理的现代选择

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

HTML5七天学会基础动画网页10(2)

制作立方体 学完前面的基础内容&#xff0c;制作立方体是个不错的练习方法&#xff0c;先看成品 再分析一下&#xff0c;六个面让每个面旋转平移就可以实现一个立方体&#xff0c;来看代码: <title> 制作立方体</title> <style> *{ margin: 0; padding: 0; …