第十二章: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 条评论
登录 后参与评论

相关文章

来自专栏Linyb极客之路

如何将多个Eclipse项目导入IntelliJ IDEA

IntelliJ IDEA 与Eclipse在新建项目上的叫法略有不同,区别见下图。

984
来自专栏无原型不设计

[桌面版] 在 Mockplus 2.1 (预览版)中使用切换面板

1、添加切换面板 2、双击编辑切换面板当前页。 3、退出当前页编辑,点击组件上工具条上的加号,增加一个内容页并编辑内容 4、添加响应用户事件的组件。...

2635
来自专栏云计算教程系列

如何在Ubuntu 18.04上安装Go

Go是Google开发的一种现代编程语言。它在许多应用程序和许多公司中越来越受欢迎,并提供了一组强大的库。本教程将指导您下载并安装最新版本的Go(本文发布时的G...

1442
来自专栏杂烩

hadoop集群配置之hadoop安装部署 原

需要先对linux系统做一些优化,编辑/etc/security/limits.conf 

675
来自专栏hbbliyong

git各种命令介绍以及碰到的各种坑

一.各种命令介绍:  git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就...

2898
来自专栏iOS开发随笔

Git 学习笔记

907
来自专栏破晓之歌

PythonAnyWhere免费部署python类网站

在执行部署Django网站之前,应该先处理好前期工作,比如对settings.py文件进行设置以防止私密信息泄露等。本文只是简单的笔记,原文地址为:https:...

993
来自专栏互扯程序

想要学Git,这一篇就够了

现在是资源共享的时代,同样也是知识分享的时代,如果你觉得本文能学到知识,请把知识与别人分享。

973
来自专栏java闲聊

Vue2.x与SpringBoot使用Nginx前后分离

2184
来自专栏lestat's blog

frp+nginx实现内网穿透

写在前面:上一篇文章写了关于ngrok+nginx实现内网穿透的流程,并提出了一些存在的问题,昨天试过frp之后,将之前ngrok存在的无法映射本地域名的问题解...

1.9K8

扫码关注云+社区