当前位置: 首页 > 科技观察

今天又学习了SpringBoot日志记录,你学会了吗?

时间:2023-03-17 12:57:50 科技观察

大家好,我是北军。今天智备君就带实习生一起来了解SpringBoot中日志框架的使用。实习生:老板您好,今天要谈什么?知北君:今天给大家讲讲SpringBoot日志。来看看我整理的思维导图。今天就从这几个角度来聊一聊。实习生:好的,那我们先看一下概况。智备君:SpringBoot内部使用了Apache开源的commonslogging来记录日志。但是,它也提供了一个基本的日志实现接口,方便访问javautillogging、log4j、logback等。springboot现在提供了Javautillogging、log4j2和logback的默认实现。如果我们需要使用它,我们只需要简单地配置它。实习生:这么说的话,springboot真的很nb,轻松搞定。你刚才说springboot内置了logback的实现,那我看到你的图片里有starter的描述,是不是默认都包含了?知背君:你可以的,小伙子。当然springboot也不是什么都加载进去的,条件自动配置你忘了吗?如果我们的项目只依赖一个spring-boot-starter,你可以看到我这个项目的依赖图。有那么多免费的。如果要依赖log4j2,需要添加spring-boot-starter-log4j2。实习生:soga,我明白了。知北君:我们看一下日志的输出格??式。平时我们在启动一个项目的时候,在控制台看到的内容都是有固定格式的。最开始是日期和时间,然后是日志级别、线程ID、分割线、线程名称、记录器名称、日志消息。我在思维导图中做了总结。这里我使用logbackhierarchy作为日志级别,有些人会使用FATAL而不是ERROR。实习生:这个很简单。当你这样画的时候,我感觉很清楚。您可以看到终端输出中有不同的颜色。这是如何配置的?知北君:别着急,看我的思维导图,不是要讲下一个环节吗?默认情况下,springboot项目的日志输出方式是控制台输出。一般控制台输出只有3种输出方式,分别是上面写的ERROR、WARN、INFO。因为如果开启了debug的话,其他的log都会打印出来,对于我们的开发来说不是很方便。实习生:那这个还是可以打开的,或者我想调试springboot的启动过程,就打开,这样可以更清楚的看到启动过程。知北君:可以,可以打开,很方便。有两种方法。第一种方式是通过命令行设置java-jarmyapp.jar--debug。第二种方式是直接在配置文件中配置。application.properties配置debug=true至于你刚才提到的颜色问题,其实很简单。如果您的控制台支持ASNI,您可以配置它。主要是配置%clr,这个很容易搞定。看看思维导图就知道了。实习生:你是对的,但我还有一个问题,什么是ASNI?知北君:这个东西是一种编码方式,我一两句话解释不清楚。我帮你搜一下。ANSI是字符代码。为了使计算机支持更多的语言,通常用0x00~0x7f范围内的1个字节来表示1个英文字符。使用0x80~0xFFFF来编码超出这个范围的,即扩展的ASCII码。智贝君:接下来我们看一下文件输出日志的配置。默认情况下,我们只需要直接在applicaiton.properties文件中配置即可。logging.file.name=app.loglogging.file.path=/xxx实习生:这个我知道,但是你地图上写的文件分区呢?知北君:你还不明白吗?我们的日志写入文件后,如果我们不对其进行处理,该文件可能会炸毁您的计算机。另一方面方便我们处理日志文件。实习生:好的,先生,我错了。我怎么没想到呢。知北君:这个先别说了,我们继续看吧。实习生:你这是什么意思?我不明白。我上面不是说了吗?再说一遍?智备君:上面只说了level,没有说怎么设置。仔细看的话,我们可以为某个包设置日志输出的级别。实习生:哦,我怎么没想到这个,可以单独设置。之前看项目的时候没有注意到这个问题。知北君:没事,你不是已经知道了吗?让我们继续。实习生:好的,老大,你写到这里的日志中关闭钩子的目的是什么?知北君:其实这就像我们如何优雅的关闭springboot。我们必须先关闭日志打印入口,然后打印打印的日志,然后我将结束我的日志打印线程。实习生:你这么说我明白了。智贝君:上面的描述是通过配置springboot的默认实现来配置日志的。我们也可以自己配置日志输出。在我们之前的春季项目中很常见。我们现在一直沿用这种方法。实习生:那你上一个链接也是跟这个自定义配置有关的。北军裁判:你的眼光真犀利。我这里主要说明两点,一是日志文件应用中的springbootprofiles。...另外就是如何引入spring环境变量。${fluentHost}...实习生:呵呵,是的,这个很好用。综上所述,今天北君就带大家了解一下springbootlogging到底是怎么回事,以及如何配置和使用。本文所有示例源码和完整思维导图已上传至Github:https://github.com/javatechnorth/java-north-sample