知识铺垫:在我们日常开发中,其实日志是和我们息息相关的。但可能平常都没怎么注意到日志相关的知识点,也不怎么关注日志,然后,在生产环境中,日志是必不可少的存在,项目出现问题了都是通过日志来定位问题的。所以学习日志相关的知识点,对我们理解项目和搭建项目都是必不可少的存在。借用一句经典的话 "当你开始关注日志的时候,代表你已经不是菜鸟了"
开发中常见的日志类型
调试日志
软件开发中,我们经常需要去调试程序,做一些信息,状态的输出便于我们查询程序的运行状况。为了 让我们能够更加灵活和方便的控制这些调试的信息,所有我们需要专业的日志技术。java中寻找bug会 需要重现。调试也就是debug 可以在程序运行中暂停程序运行,可以查看程序在运行中的情况。日志主 要是为了更方便的去重现问题。
简单点说调试日志就是我们程序员自己添加的,用来测试项目的,比如使用system.out.println("测试")来输出内容,测试项目,这就是调试日志。开发中随处可见
系统日志
系统日志是记录系统中硬件、软件和系统问题的信息,同时还可以监视系统中发生的事件。用户可以通 过它来检查错误发生的原因,或者寻找受到攻击时攻击者留下的痕迹。系统日志包括系统日志、应用程序日志和安全日志。
简单点说就是就是用于记录系统信息的,比如一些框架的日志,其他依赖包内置的日志等。像我们运行spingboot项目是,那些输出的日志信息就可以理解为系统日志
系统日志的价值
系统日志策略可以在故障刚刚发生时就向你发送警告信息,系统日志帮助你在最短的时间内发现问题。 系统日志是一种非常关键的组件,因为系统日志可以让你充分了解自己的环境。这种系统日志信息对于 决定故障的根本原因或者缩小系统攻击范围来说是非常关键的,因为系统日志可以让你了解故障或者袭 击发生之前的所有事件。为虚拟化环境制定一套良好的系统日志策略也是至关重要的,因为系统日志需 要和许多不同的外部组件进行关联。良好的系统日志可以防止你从错误的角度分析问题,避免浪费宝贵 的排错时间。另外一种原因是借助于系统日志,管理员很有可能会发现一些之前从未意识到的问题,在 几乎所有刚刚部署系统日志的环境当中。
日志文件
经过前面的介绍,大家应该都明白什么是日志和日志都有那些分类了吧。但有没想过,目前的日志有些什么问题呢?
答案: 没有对日志进行持久化,没有将日志内容保存起来
我们日常的练习都没有将日志保存的习惯,当然日常练习也没有必要保存日志。但在正式的项目开发中,将日志保存就很好必要的,因为当我们对项目进行打包部署后,一般就不对项目作修改了,程序会一直运行在服务器,这时候日志持久化的重要性就体现出来了
日志文件就是用于存储日志的文件,一般来说日志文件都是纯文本文件。
JAVA 日志框架
为什么要用日志框架
因为软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某 些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业 务逻辑设计 。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事务处理,安全 性,数据流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它 是不断升级的,你可以直接享受别人升级代码带来的好处。
现有的日志框架
JUL(java util logging)、logback、log4j、log4j2
JCL(Jakarta Commons Logging)、slf4j( Simple Logging Facade for Java)
日志门面
JCL、slf4j
日志实现
JUL、logback、log4j、log4j2
JUL是java内置的日志实现;log4j是一个独立的日志框架,是很多年前的一个框架的,目前基本不使用的,只做了解即可。logback是参考log4j而重新实现的日志框架,目前spingboot的内置日志框架就是logback。log4j2是对log4j,性能上提升很大,性能比logback,目前大型的项目日志框架一般都会选择log4j2。
日志门面简单来说就是提供一个统一的接口,让你去实现。目前slf4j是日常开发中的用得最多得日志门面。基于这个日志门面,项目可以根据自己得需要去切换到不同的日志实现框架。
到这里日志的基本介绍就完成了,后面会介绍日志具体的实现