网站首页 > java教程 正文
Java 日志框架
Java 日志框架介绍
对于一个应用程序来说日志记录是必不可少的一部分。线上问题追踪,基于日志的业务逻辑统计分析等都离不日志。
日志,通常不会在需求阶段作为一个功能单独提出来,也不会在产品方案中看到它的细节。但,它在任何一个系统中确有重要的地位。
java领域存在多种日志框架,目前常用的日志框架包括Commons Logging,Slf4j,Log4j,Log4j2,Logback,Jul(Java Util Log)。
Java 日志框架分为两类:门面型和输出型日志框架。
Java 日志框架分类
门面型日志框架
提供日志调用的接口,实际的日志输出托付给日志系统实现:
- JCL(Jakarta Commons Logging):比较流行的日志框架,非常多框架都依赖JCL,比如Spring等。
- SLF4j:提供新的API,初衷是配合Logback使用,但同一时候兼容Log4j。
输出型日志框架
负责输出日志:
- Log4j:经典的一种日志解决方式。内部把日志系统抽象封装成Logger 、appender 、pattern 等实现。我们能够通过配置文件轻松的实现日志系统的管理和多样化配置。/li>
- Log4j2:Log4j的2.0版本号。对Log4j进行了优化。比方支持參数API、支持异步appender、插件式架构等
- Logback:Log4j的替代产品,须要配合日志框架SLF4j使用。
- JUL(java.util.logging):JDK提供的日志系统。
Java 日志框架使用
选择框架
使用日志框架现在的使用方式,都分建议使用门面型+输出型日志框架一起使用,这样换日志框架只需要修改依赖配置就可以直接使用。但也没强制你怎么使用,除了Logback需要跟SLF4j搭配使用,其他的输出型日志框架也可以单独使用(不建议)。
引入框架依赖包
选择好日志框架就根据选择的日志框架引入依赖包。
日志级别
日志级别一般你可以理解只有4个级别: debug < info < warn < error
- debug: 完整详细的记录流程的关键路径,用于开发人员比较感兴趣的跟踪和调试信息,生产环境中正常不会打开debug状态
- info: 应简洁明确让管理员确定状态,记录相当重要有意义的信息。关键的系统参数的回显、后台服务的初始化状态、需要系统管理员确认的关键信息都需要使用info级别
- warn: 能清楚告知发生了什么情况,指示潜在问题能引起别人重视,但不一定需要处理
- error: 系统出现异常或不希望出现的问题,能及时得到关注处理。但也不是所有的异常都记录成error
Java 日志框架配置文件
日志框架的配置主要都分为三个大的配置:
- Appenders:负责将日志事件记录到目标位置。在将日志事件输出之前,Appenders使用Layouts来对事件进行格式化处理。
- Layouts:它负责对日志事件中的数据进行转换和格式化。Layouts决定了数据在一条日志记录中的终于形式。
- Loggers:Logger负责捕捉事件并将其发送给合适的Appender。
当Logger记录一个事件时。它将事件转发给适当的Appender。然后Appender使用Layout来对日志记录进行格式化,并将其发送给控制台、文件或者其他目标位置。另外,Filters能够让你进一步指定一个Appender能否够应用在一条特定的日志记录上。在日志配置中,Filters并非必需的,但能够让你更灵活地控制日志消息的流动。
总结
Java 日志框架内容真了太多,上面主要描述Java 日志框架已经存在的概要。由于篇幅和时间问题就没把一些细节也写出来。后续会继续更详细的把实践使用的写在后续的文章。
希望我的分享可以帮助到你,如果你在内容技术上遇到难题,可以+关注■@主引教程 ,反馈给我们。我们会及时回复,如果有那些内容有误可以直接提出来,我们会及时纠正,谢谢来访。
猜你喜欢
- 2024-11-12 java日志那些事儿-日志野史(java 日志包)
- 2024-11-12 大厂都是如何解决Java日志级别,重复记录、丢日志问题?
- 2024-11-12 五年Java经验,面试还是说不出日志该怎么写更好?
- 2024-11-12 Java常用日志框架总结(java的日志框架)
- 2024-11-12 java日志组件(java 日志系统)
- 2024-11-12 java打日志超简单(java如何输出日志)
- 2024-11-12 Java企业级项目的日志规范(java企业级项目的日志规范有哪些)
- 2024-11-12 开发须知:开发者须知的4类Java日志
- 2024-11-12 谈谈日志的最佳实践(谈谈日志的最佳实践方式)
- 2024-11-12 4000字长文介绍Java日志中框架,最全面
你 发表评论:
欢迎- 06-15Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 06-15推荐一款超棒的SpringCloud 脚手架项目
- 06-15IDEA将项目打包成jar包(idea打包普通java项目)
- 06-15Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 06-15记录Dockerfile将jar包构建成部署所需的镜像
- 06-15项目基础部署汇总八---linux下xxl-job安装
- 06-15Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 06-15终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 最近发表
-
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 推荐一款超棒的SpringCloud 脚手架项目
- IDEA将项目打包成jar包(idea打包普通java项目)
- Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 记录Dockerfile将jar包构建成部署所需的镜像
- 项目基础部署汇总八---linux下xxl-job安装
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 如何将本地JAR文件添加到Maven项目中
- Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)