大家好,我是贺贺,随着课程设计、毕业设计的来临,不同专业的同学有不同的要求,比较常见的做一些应用软件,但是有些专业就比较变态了,需要做数据分析什么的,别说分析了,连数据的获取都不会。
初识日志
说起来日志,算是老朋友了,在公司实习的时候,做的就是日志的采集和分析工作,对ERROR的信息也会做出通知的功能,例如通过邮箱的通知。当时用的是logback+slf4j的日志框架。
日志框架的故事
有很多关于日志的框架,早期有JUL,这一款是JDK提供的,还有log4j,这是Apache提供的。当时这两款都比较常用,有些公司用JUL,有些公司用log4j,这就使程序员很不方便了,需要学两套日志框架,于是,后来出来了一个叫做JCL的东西,是Apache提供的一套通用日志API,也就是只需学这一个,就可以去操作上面那两个框架了,简直就是完美。但世界总是没那么简单,后来在Apache的那位做日志的大佬不干了,自己出来又搞了一个名字叫做logback的日志框架,由于大家伙都在用JCL这个通用API,而且很多项目都是之前的老框架,所以,logback也没有火起来,但是大佬就是大佬,这孩子又搞了一个slf4j,也是一个通用API,不仅可以适应自己的logback,而且可以兼容那两款老的框架(JUL和log4),关键是slf4j还很好用,随着时间的推移,slf4j+logback越来越火了。Apache也不服输,模仿logback搞出来一个log4j2,并且适配那位大佬的通用API(slf4j),后来呀log4j2+slf4j也慢慢的起来了,而之前的那一套JCL通用API慢慢的也凉了,应该没凉透。最近有新闻说log4j2出bug了,不知真假,不管它,今天主要介绍原汁原味的大佬出品logbak+slf4j。
通用API slf4j
slf4j本身是没有什么日志功能的,它只是提供了一个通用的API,在用它的时候,需要一个日志框架结合使用,可谓是男女搭配干活不累,对了,slf4j还可以搭配多个日志框架,例如slf4j+logback+log4j2,对于程序员来说,不用管它结合多少了日志框架,只需掌握slf4j这一套API就可以操纵它的后宫了。这里给出他的maven依赖
后宫一姐 logback
这个日志框架,也是我当时公司所用到的,这个日志框架,可以以不同的方式进行输出日志,你只需简单的配置即可,而且网上很多模板,可能这就是生态吧,先把他的依赖导入。
导入之后,按套路来说,应该是去配置,但是我不想配,不配置就用默认的,咱先跑一下子。
我们可以清楚的看到,trace没有打印,为什么呢,因为人家默认就不打印,而且我们可以看到控制台输出的有时间、main、ERROR、包等信息,为什么是这些信息呢,也是因为默认,下面就尝试着改改这些默认的东西,,首先我们要在resources下创建一个 lockback.xml
文件。
上面这张图,主要配置了日志的输出格式,以及输出的位置和日志输出级别。
logback配置数据库
接下来是重头戏,也就是如何把这些日志保存到数据库中,官方给出了一套解决方案,我们只需要自己配置一下要连接的数据库,然后通过官方指定的表进行建表格就可以了,这里给出部分创建表的脚本。这个表也是核心的表。
接下来就是在logback里配置数据库了。
当数据库配置好之后,执行代码,可以看到数据库中就出现了日志
数据采集、通知、分析思路
基于以上操作,我们就完成了对项目中的日志的采集工作,并顺利的把他们存储到了数据库中,接下来,我们可以通过对数据库的操作,把这些数据以前端的形式展示出来,也就是进行可视化,如果你还想加一个通知,可以通过对日志进行解析,例如,找到有error的日志,并把这条日志以邮箱的形式推送给程序员,达到报警的效果这样以来,就实现了一个对项目的监控功能,同时也差不多符合我们的作业,即采集数据、分析数据,另外还多了个报警功能。
白嫖党必读
为了大家的阅读体验,上面的代码是以截图的形式给出的,有些代码没有全部展示,如果有需要代码或者有任何疑问,可通过工众号【贺贺学编程】,进行私信。