第十二章:SpringBoot使用LogBack作为日志组件

企业级项目在搭建的时候,最不可或缺的一部分就是日志,日志可以用来调试程序,打印运行日志以及错误信息方便于我们后期对系统的维护,在SpringBoot兴起之前记录日志最出色的莫过于log4j了,对于目前来说项目还有很多在用log4j来记录日志。那么我们的SpringBoot是怎么记录日志的?

SpringBoot内部集成了LogBack日志依赖,SpringBoot默认使用LogBack记录日志信息,默认根据base.xml配置内容来输出到控制台和文件之中,那么接下来讲解LogBack是如何记录日志到控制和文件之中?

本章目标

学习SpringBoot项目中使用LogBack记录日志到控制台和文件之中,根据不同的级别输出不同形式日志信息。

构建项目

因为SpringBoot内部集成了LogBack所以我们不需要添加任何依赖,我们只需要创建一个新的空项目即可。如下图1所示:

图1

我们创建项目是选择的WAR类型,所以自动添加了WEB、Tomcat。这个对我们的讲解无关紧要,因为SpringBoot有默认的配置所以我们并不需要添加任何操作,现在日志就可以在控制台打印了,为了证实这一点,我们先来创建一个IndexController然后添加一个访问方法/index,在该方法内添加日志的info级别的打印(默认配置只有Info及以上级别才可以输出),代码如下图2所示:

图2

下面我们来启动项目,访问地址127.0.0.1:8080/index,查看控制台的输出效果,如下图3所示:

图3

我们访问地址后,控制台就对应的输出了info级别的测试日志内容了,上面我们说了这是logback的默认配置base.xml搞的鬼,那么我们该如何修改默认配置呢?

修改LogBack配置

LogBack读取配置文件的步骤 (1)尝试classpath下查找文件logback-test.xml (2)如果文件不存在,尝试查找logback.xml (3)如果两个文件都不存在,LogBack用BasicConfiguration自动对自己进行最小化配置,这样既实现了上面我们不需要添加任何配置就可以输出到控制台日志信息。

接下来我们在resources目录下创建名叫logback.xml的文件,并且添加日志配置输出到文件内按天存储到不同的文件之中。具体配置如下图4所示:

图4

我们在logback.xml配置文件中,添加了控制台输出、文件每天输出、日志文件最大上限、日志的最低级别等。下面我们来运行下项目查看我们的配置是否起作用了。

测试LogBack

修改我们的IndexController内的index方法并添加多个日志级别的输出,为了方便对照我们的配置是否生效,如下图5所示:

图5

我们logback.xml配置文件配置了根输出等级是INFO,所以如果logback.xml生效,那么我们的控制台以及文件内将不会存在Debug级别的日志输出,我们重启下项目,访问之前的地址/index查看控制台以及/logs/runtime.xxxx.log配置文件内容,如下图6、7所示:

图6

图7

可以看到正如我们的推测的一般,Debug级别的日志没有输出,只有INFO以及ERROR级别日志打印并输出到文件中。我们配置的./logs作为日志的输出根目录,所以LogBack自动在我们的项目根目录下创建名叫做logs的文件夹,并且项目启动时第一次记录日志时会自动创建根据我们的命名方式的文件。

屏蔽记录日志

如果我们在项目中需要屏蔽某个或者多个包下不输出日志也不记录日志到文件内,那么我们需要修改application.yml添加对应配置,如下图8所示:

图8

可以看到我们屏蔽了com.yuqiyu.chapter12.controller包下的日志打印,为了方便测试我们在com.yuqiyu.chapter12包下创建一个名叫TestController的控制器并复制IndexController的没内容如下图9所示:

图9

我们再来重启下项目,访问127.0.0.1:8080/index地址后再查看下控制台以及日志文件内是否存在日志信息,如下图10所示:

图10

控制台并没有打印任何的日志,日志文件中也是如此!我们再来访问下127.0.0.1:8080/test地址,查看控制台以及日志文件内容,如下图11、12所示:

图11

图12

可以看到成功打印了日志,证明了我们的配置已经生效了。当然也可以改变某个包下的日志输出等级,只需要将'OFF'改成对应等级即可。

注意

在application.yml配置文件内,off必须添加双引号,否则不会生效。

总结

以上内容就是有关LogBack配置相关讲解,本章主要讲解了SpringBoot如何使用内置的日志组件完成日志的输出、日志保存到文件、控制日志输出等。

本章内容已经上传到码云:

SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter

SpringCloud配套源码地址:https://gitee.com/hengboy/spring-cloud-chapter

SpringBoot相关系列文章请访问:目录:SpringBoot学习目录

QueryDSL相关系列文章请访问:QueryDSL通用查询框架学习目录

SpringDataJPA相关系列文章请访问:目录:SpringDataJPA学习目录

SpringBoot相关文章请访问:目录:SpringBoot学习目录,感谢阅读!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我是攻城师

Solr中Group和Facet的用法

2505
来自专栏SpringBoot 核心技术

第九章:SpringBoot内置SpringMvc静态文件地址修改

2722
来自专栏IMWeb前端团队

node.js入门心得

很多前端开发的同学应该都会接触或者了解nodejs,但是经常会听到入门难的抱怨。一方面不知道怎么学习nodejs。另一方面,拿到一些大牛写的nodejs源代码,...

2177
来自专栏玩转JavaEE

SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题(一)

当前后端分离时,权限问题的处理也和我们传统的处理方式有一点差异。笔者前几天刚好在负责一个项目的权限管理模块,现在权限管理模块已经做完了,我想通过5-6篇文章,来...

4325
来自专栏WebDeveloper

简单封装curl的get与post发送数据

2493
来自专栏散尽浮华

jenkins配置记录(1)--添加用户权限

前一阵子在线上部署了一套jenkins环境,作为线上代码发布平台使用。 部署记录:http://www.cnblogs.com/kevingrace/p/565...

3188
来自专栏逸鹏说道

Ubuntu16.04下的NetCore环境搭建

跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux VSCode安装:http://www...

2735
来自专栏十月梦想

小程序目录结构

        第一篇微信小程序的博文,不知从何开始说;name就从最基础的目录结构来说吧,初次接触这个东西自己也是折腾挺久的,这里系统的对比一下web开发的文...

891
来自专栏DeveWork

WordPress 一键关闭/禁止页面评论功能

WordPress 中页面都是默认开启批量功能的,对于一些特殊的网站,可能需要禁止所有的页面的评论功能;一个个去页面编辑页面去禁止固然可以,但是页面一多的话那就...

1916
来自专栏西安-晁州

nodejs中引入art-template模板

使用Webstorm创建nodejs express应用时,默认使用的是jade或者ejs模板,对于不习惯这两种模板语法的人来说确实不是很方便。没关系,这里我们...

3160

扫码关注云+社区