00:00
好,前面呢,我们看了一下,将其他的日志都统一到self街的这个原理,那么我们接下来看一下s boot里边这些日志是怎么做的,来我呢,创建一个新的项目,哎,创建一个新的项目。我们在这个项目里边呢,来测试里边的日志使用。com点。点硅谷好,我们叫BOOT03啊,我们就叫log。我们来测日志,好,这个报名来改一下,下一步我呢还是选择web模块,哎,我就选择一个web模块就行了,然后呢,Next。Finish。我让他呢,把项目创建出来。好,把这个关掉。然后呢,我们来看一下spring BOO里边把这些删掉,首先呢,这是BOO为我们创建的这个项目的配置文件,哎,这个po文件,Po文件里边呢,引入了web依赖,还引入了测试依赖,而这些依赖之间的关系到底是怎么样的呢?我们可以来分析一下,分析有两种办法,第一种办法呢,我们可以在右边这一个叫projects,这里边我们来找到这个项目有dependency,我们可以这么来分析,如果你右边没有这个,你需要在左下角,哎,左下角你点一下把它点出来。
01:35
这是第一种分析,然后呢,还有另外一种更好的分析,我可以直接在他身上右键,右键呢有个叫diagram收depends,哎,那呢直接我们这个idea工具呢,会以一张图谱的方式给我们展示出整个依赖的关系,我们来CTR按按着,然后滑滚轮把它放大,我们呢,先来看第一个我们当前项目呢,这个spring boot03log,哎,它呢依赖的是springt start web。
02:06
好,这个web呢,它依赖了众多有son来做的,还依赖了tomca嵌入式的,这个mca的,它还依赖了数据校验的,你看这个还用的什么杰是吧,但是呢,它还依赖了一个叫这呢是我们每一个每一个启动器啊,每一个场景都要依赖的东西的,我呢在这儿记录一下。这是一个最基本的依赖spring start,而我们这个spring start呢,我们来看一下。Start里边有这么几个模块,一个就是什么,你看自动配置,哎,我们以前老说的自动配置功能都在这个模块里边,Start里边依赖了自动配置,也依赖了咱们这个文件解析,它是用这个snake解析的,还依赖了一个什么东西呢?叫start log,我来把它点进来。
03:06
我们呢,相当于我们这个里边的日志是有。由他来做的,哎,依赖了一个叫start log boot里边boot使用来来做来做咱们这个日志功能。那我们说每一个start都是一个场景启动器,好我们这个它相当于是来封装我们所有日志场景的,那我们这个日志它是怎么用的呢?我们先来分析它的这个,你看啊,这个我们这个日志记录,首先呢,我们来看这个,它依赖了我们这个来截一个图。我们来看,我们在这个log里边,它依赖了这么多。而这么多里边呢,首先log bank,这就是我们日志的实现,Log log call,这是呢,我们使用log bank进行日志记录,使用log。
04:08
Bank记录日志。哎,这是一个日志实现。然后呢,我们再来看他还导了几个叫gl to佛街log佛街街GC街这几个是什么?哎,我们上一节课刚说过这几个呢,就是把其他日志框架,哎,它的作用就是呢,把其他啊其他日志转为什么self否节的这个账号。接的相关依赖,然而呢,它就是帮我们来将其他日志框架转成cell for街的,而最终呢,啊,由于他们和log他们都依赖赛尔佛街,所以呢,赛尔佛街也导了进来,导入了日志抽象层。Self街,所以呢,整个图看起来其实就跟我们哎之前看self街官方文档分析一样,来把这个图保存一下,这是我们BOO在底层的日志依赖关系,好,我们把这个图呢放在这。
05:23
复制好我们supreme布它的底层依赖关系,底层依赖关系好,我们把这个图呢,插入进来,是在images文件夹下的它好这是T的底层依赖关系,那用一句话总结总结呢,就是说底层也是使用加log的方式。底层也是使用间加log bank的方式进行日志记录。
06:02
日志记录,这是第一个,第二个我们再来看啊,他还导了一些,除过导间加log外,它还导了j ul to log or什么什么,哎,都是把什么东西变成self,你看在后边,前面呢是前面的日志框架,就是把前面的日志框架变成后边的self for街,这就是我们,你看啊,在解决遗留问题的时候,我们说我们这个应用我们要用self for加log,可能呢,有其他依赖日志依赖我们把这些日志呢,我们都替换成这个东西,那么呢,也考虑到了其他日志。也把其他的日志。BOT。也把其他的其他的日志都哎替换成了咱们这个间,然后呢,它倒了中间的这些替换包,那中间的这些替换包,替换包是什么东西啊?哎,我们来给大家随便看一个,比如我们就以这个什么g c lo cell街为例啊,我点进来t c lo,我们来找一个g c lo cell街GC你看啊,你看我们这个炸包虽然叫g c lo,但是里边的类名都叫什么啊,Org,阿帕奇斯log,也就是说相当于斯里边的关键类,我们都在这个包里边,只不过这个包里边我们来点进看一下。
07:40
它里边在用的时候,比如日志工程,你看它给我们用的是啥,是咱们这个cell for街log factor,也就是说它在底层偷梁换柱了一下呢,虽然你用的你看起来你用的是阿帕奇log下边的log factor,但然呢,这个log factor在内部使用的才是人家sell或街的log factor,那呢,他们就是一些中间的偷梁换柱包,哎,我把这个呢给大家举一个例子,我放在这就行了。
08:13
剩下的都一样,你都可以看到类似的逻辑。你都可以看到类似的逻辑,哎这个闸代好我放这,哎比如呢,你再来看一下什么啊,Log佛街or佛街,哎,他怎么把log佛街又转成啊佛街呢,我们来看这log佛街over佛街,你看这个包名是不是又是阿法奇log佛啊,哎也就说是这个,但是呢,真正用的时候,比如呢,我们在这个log类里边,这个log类里边呢,要进行日志记录啊,这个日志记录呢,哎,我们这有一个叫我们把这个点进去,你看它在日志记录的时候,里边用的是什么呢?里边你看他来看日志的各种级别里边用的是谁的日志记录器啊叫cell for街log,你看啊,在日志记录的时候又用的是cell for街的,那那中间的这些转换包,就是我们之前说的,诶偷梁换柱,把你原来的包虽然剃掉了,但是我们中间的这个转换包连包名都不变一下的,来看一下,诶就是这个,我来把这两个例例子呢。
09:19
我们都截图在这,这是我们中间的这个转换班。长成这样,中间转换包它呢,就长成这样,我来保存一下,好我们来放在直接放在,我把这个文件名我先复制来,我一会儿要用好,我们放在文档。Images下,好,我们这个中间包长成什么样呢?我们来看中间包的样子,好来放在这叫images。JA下images。好,这就是我们这个中间包啊,就是这个样子,那么呢,我们spring boot相当于帮我们已经考虑了让中间转换的问题,所以呢,唯一一个问题是什么,如果我们要引入其他框架。
10:17
哎,我们在我们spring应用里边,我引入了其他框架,然后呢,一定要干嘛,一定要把这个框架的。默认日志依赖,日志依赖移除掉。移除掉,移除掉,为什么要移除掉啊?你看看假设你的框架你用的是log佛间,那么你的框架里边用的这个log佛间,你看跟这个log佛间这包名类面都一样,这不就炸包出现问题了吗?所以我们这个包就冲突了,所以说我们一定要移除掉,包括在底层都是这么做的,因为我们有一个疑问,什么疑问呢?我们框架用的是什么?是不是common log啊?
11:07
哎,我们用的是那排除了没排除,我们呢,可以简单来看一下来我们来到这一块这spring,我们这引入了spring start,我来双击点进来,你看啊,在这一块呢,它依赖spring核心框架,你看上来就干嘛,是不是排除掉了托斯Logan要说哎我们的用法也就是这么来用,哎我们看到人家确实也在排除掉了。每一个框架默认的这个日志,诶,我们以后啊,也就应该这么来做,我们引入新框架以后,为了让一动配的日志,然后呢,而且。
12:04
而且底层使用咱们这个cell间。加logo的方式记录日志。我们唯一需要做的是引入其他框架的时候。只需要,只需要干嘛把这个框架依赖的日志框架排除掉,然后呢,我们不用,哎,我们不用再做任何多余的配置,直接spring呢就能啊跟它适配起来,这就是我们不它做日志整合的核心总结,哎,它的原理呢,我们在这也都给大家说了。
我来说两句