java日志框架总结(三 、Log4j日志框架)

一、简介

        Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目, 为Java提供了日志记录功能。能够让程序员非常方便的记录日志, 并且提供了多种适配方式,能满足各种需求。

使用Log4j 只需要导入一个jar包,jar 下载地址。 Maven 坐标为:


<dependency>
    <groupId>org.log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.9</version>
</dependency>

二、Log4j 组成

Log4j 有三个主要组件——loggers、appender 和 layouts ——它们可以一起使用,以在所需的目的地打印自定义的日志语句。其中对应着下面三个部分:

  • Level : 日志等级, 用于定义日志的重要程度
  • Appender: 追加器, 用于定义日志的输出位置
  • Layout: 布局, 用于定义日志的输出格式
1)Logger

Logger 对象负责展现日志记录信息。它是 Log4j 架构中的第一个必须层。Logger 类在包 org.apache.log4j 中定义。

通常,我们为每个应用类创建一个 Logger 实例来记录属于该类的重要事件。此外,我们通常使用接受类名作为参数的静态工厂方法在类的开头创建此实例:(与JUL类似)

private static final Logger logger = Logger.getLogger(JavaClass.class.getName());

 Log4j 日志等级有:

  • off: 关闭日志 , 最高等级, 任何日志都无法输出
  • fatal,: 灾难性错误, 在能够输出日志的所有等级中最高
  • error:错误, 一般用于异常信息
  • warn:警告, 一般用于不规范的引用等信息
  • info: 普通信息
  • debug: 调试信息, 一般用于程序执行过程
  • trace: 堆栈信息, 一般不使用
  • all: 打开所有日志, 最低等级, 所有日志都可使用

在 Logger 核心类中, 除了 off/all 以外, 其他每个日志等级都对应一组重载的方法, 用于记录不同等级的日志

当且仅当 方法对应的日志等级 大于等于 设置的日志等级时, 日志才会被记录

2)Appender(追加器) 

Appender 用于定义日志的输出位置, Log4j 提供了多种可供选择的追加器。常用追加器有

Appender的作用:
ConsoleAppender:将日志记录在控制台
FileAppender:将日志记录在文件中
RollingFileAppender:将日志记录在文件中, 当文件达到一定大小之后,会创建新文件
DailyRollingFileAppender:将日志记录在文件中, 每天一个备份文件
JDBCAppender:将日志记录在数据库表中

以上五个为常用Appender,完整列表为

当然, 如果觉得这些也不能满足你的需求, 你可以:

  • 实现 Appender接口 implements Appender
  • 继承 AppenderSkeleton类 重写核心方法
3)Layout (布局)

Layout 用于定义输出日志的格式, 常用Layout 有

Layout的格式 
SimpleLayout:简单格式, 格式为 日志等级 - 日志内容 
TTCCLayout :Time,Thread,Category,Context [线程] 日志等级 记录日志的类的包名.类名 - 日志内容
XMLLayout:以XML格式输出日志
HTMLLayout :以HTML文件格式输出日志
PatternLayout :灵活格式输出日志, 使用通配符自定义格式 

以上五个为常用Layout ,完整列表为

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【时序预测】2、prophet:Forecasting at Scale | Python 文档教程

文章目录 一、Quick Start二、饱和预测2.1 Forecasting Growth 预测增长2.2 Saturating Minimum 饱和最小值 三、Trend Changepoints 趋势变化点3.1 Automatic changepoint detection in Prophet 自动检测变化点3.2 Adjusting trend flexibility 调整趋势灵活性3.3 Specifying …

从零开始做题:逆向 ret2shellcode orw

1.题目信息 BUUCTF在线评测 下载orw时防病毒要关闭 2.题目分析 orw是open、read、write的简写。有时候binary会通过prctl、seccomp进行沙箱保护&#xff0c;并不能getshell。只能通过orw的方式拿到flag。 fdopen&#xff08;‘./flag’); # 打开flag文件&#xff0c;得到fd…

线程调度(Java Android)

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览2.1、线程的属性 三、…

HTTP服务器基础认识(复习)

鉴于曾经写过相关文章&#xff0c;这里就不再详细介绍了&#xff0c;关于详细的介绍可以参考我之前的文章 HTTP协议初识中篇-CSDN博客 一个简单的设置套接字的过程&#xff0c;也当成是复习一下下了 代码 #include <iostream> #include <cstdio> #include <…

Redis的数据类型

目录 string 1.编码方式 2.应用场景 3.常用命令 hash 1.编码方式 2.应用场景 3.常用命令 list 1.编码方式 2.应用场景 3.常用命令 set 1.编码方式 2.应用场景 3.常用命令 zset 1.编码方式 2.应用场景 3.常用命令 如何理解Redis的编码方式 embs…

2024三掌柜赠书活动第七期:一本书读懂AIGC:探索AI商业化新时代

目录 前言AI商业化的背景和挑战关于《一本书读懂AIGC&#xff1a;探索AI商业化新时代》编辑推荐内容简介作者简介图书目录书中前言/序言《一本书读懂AIGC&#xff1a;探索AI商业化新时代》全书速览结束语 前言 不用多讲&#xff0c;想必大家也都知道&#xff0c;人工智能在过…

k8s-基础知识(Service,NodePort,CusterIP,无头服务,NameSpace,资源限制)

Node Node 是 Pod 真正运行的主机&#xff0c;可以是物理机&#xff0c;也可以是虚拟机。 Annotations 原文链接 Annotations 是 key/value 形式附加于对象的注解。不同于 Labels 用于标志和选择对象&#xff0c;Annotations 则是用来记录一些附加信息&#xff0c;用来辅助应…

【标定】多源LiDAR传感器标定方法(含C++代码)

提供的代码是一种使用平面提取和匹配以及随后的Ceres Solver库优化转换的LiDAR标定方法的全面实现。这种方法用于对齐多个LiDAR传感器的数据,比如那些安装在车辆或机器人不同位置的传感器,以确保它们生成的点云在同一坐标系统中。 以下是对代码及其实现的标定方法的介绍: 利…

linux虚拟化之kvm(一个200行的arm64虚拟机代码)

一、背景 之前介绍了X86上的一个简易虚拟机&#xff1a; linux虚拟化之kvm&#xff08;一个150行的x86虚拟机代码&#xff09;-CSDN博客 &#xff0c;但作为一名嵌入式开发者&#xff0c;还是需要在ARM64上尝试一番&#xff0c;ARM64上的虚拟化和X86还是有很多差异点&#x…

nosql数据库知识点总结

目录 1、什么是nosql数据库&#xff0c;它包括哪些 文档数据库 建数据 哪一种是最简单的 2、什么是文档数据库 3、创建mongodb时默认会建造三个数据库&#xff0c;是哪三个 4、mongodb支持的数据类型有哪些 5、它的常规语句有哪些 6、副本集和分片集有什么作用 复制 …

​​力扣刷MySQL-第九弹(详细讲解)

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;力扣刷题讲解-MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出…

Spring 事务原理二

该说些什么呢&#xff1f;一连几天&#xff0c;我都沉溺在孤芳自赏的思维中无法自拔。不知道自己为什么会有这种令人不齿的表现&#xff0c;更不知道这颗定时炸弹何时会将人炸的粉身碎骨。好在儒派宗师曾老夫子“吾日三省吾身”的名言警醒了我。遂潜心自省&#xff0c;溯源头以…

20240128-读书带来的影响

我本身不算是一个特别喜欢读书的人&#xff0c;更多的时候其实是为了读书而读书。在坚持每天读了一小时书之后&#xff0c;我发现自身开始慢慢有些变化。是什么时候突然有了这种感悟呢&#xff0c;是最近每周5小时左右的微信读书以及纸质书籍的阅读&#xff0c;让我体会到了读书…

C++爱好者的科目四易错点总结

科目四易错点总结 在科目四考试中&#xff0c;一部分内容是可以通过刷题快速掌握的&#xff0c;一部分内容缺因易混淆而降低我们的准确率&#xff0c;本文主要对后者进行总结&#xff0c;期待大家补充与指正。 注&#xff1a; 本文不是全部的知识点总结处 本文不是权威机构 本文…

【分布式技术专题】「探索高性能远程通信」基于Netty的分布式通信框架实现(附通信协议和代码)(上)

基于Netty的分布式通信框架实现 前提介绍回顾Dubbo分布式通信框架组成元素程序执行流程消息协议设计实现机制ChannelInboundHandlerAdapter自定义事件处理 ChannelOutboundHandlerAdapter 编(解)码处理器编码过程阶段ChannelOutboundHandlerAdapter序列化实现ChannelOutboundHa…

NLP自然语言处理的发展:从初创到人工智能的里程碑

自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;人工智能领域中备受关注的重要分支之一。它使得计算机能够理解、解释和使用人类语言。随着技术的不断发展&#xff0c;NLP经历了从初创时期到深度学习时代的巨大演变&#xff0c;推动了互联网产…

【教学类-XX -XX 】20240128名字字卡1.0(15CM正方形手工纸、黑体,说明是某个孩子的第几个名字)

作品展示&#xff1a; 15CM手工纸上一个名字&#xff0c;页眉有这个字是哪一位孩子的第X个名字的说明 背景需求&#xff1a; 去年我制作了中6班孩子的姓名卡片&#xff0c;一张A4纸上6个字&#xff0c;每张卡片大约10CM&#xff09; 【教学类-25-01】20230320 名字卡片绘画游…

使用机器学习算法检测交易中的异常行为

交易中的异常检测意味着识别交易或相关活动中的异常或意外模式。这些模式被称为异常或异常值&#xff0c;明显偏离预期规范&#xff0c;可能表明存在不规则或欺诈行为。 异常检测在各种业务中发挥着至关重要的作用&#xff0c;尤其是那些涉及金融交易、在线活动和安全敏感操作…

IMX6ULL驱动学习——通过总线设备驱动模型点亮野火开发板小灯【参考韦东山老师教程】

参考&#xff1a;【IMX6ULL驱动开发学习】11.驱动设计之面向对象_分层思想&#xff08;学习设备树过渡部分&#xff09;-CSDN博客 韦东山课程&#xff1a;LED模板驱动程序的改造_总线设备驱动模型 我使用的开发板&#xff1a;野火imx6ull pro 欢迎大家一起讨论学习 实现了总线设…

ChatGPT与文心一言:智能回复与语言准确性的较量

在当今数字化时代&#xff0c;随着人们对智能化技术的需求不断增长&#xff0c;智能回复工具也成为了日常生活中不可或缺的一部分。ChatGPT和文心一言作为两个备受瞩目的智能回复工具&#xff0c;在智能回复、语言准确性以及知识库丰富度等方面各有卓越之处。 本文将对这两者进…