00:00
好,前面呢,我们说了一下C尔街的使用原理,但是呢,实际在开发的时候,我们可能场景更复杂一点,有一些遗留问题,我们来说一下诶。来说一下咱们这个遗留问题。什么遗留问题呢?假设现在是我们这个A系统,A系统里边呢,我开发A系统的时候,我是用cell附件。加log bank等方式,诶我是面向C件编程,我里面日志记记录,我都用的是S件,但是呢,我在开发A系统的时候,我要依赖框架,我呢可能还要依赖ne框架,我呢还要可能依赖马斯等等等等,可能一大堆一大堆,但是呢,每一个框架它有可能呢在底层也用到了日志,而且还各不相同,比如我们spring框架底层我们用的就是coms log,它是用来做志记录的,而我们这个用的是我们这个。
01:04
它又用它来做日志记目的等等等等,我们就不说了,那么现在呢,就出现了什么问题呢?我这个系统里边既有sell for log bank,哎,我用它来日志记录,而其他框架呢,又用别的日志记录,这个感觉,哎,这就像一个日志杂交品种一样,哎这也有,那也有,那我们现在想要做一件事就是统一就执行。即使是我们别的框架,那呢,你最终也给我用到self街log,即使是别的框架和我,和我一起统一使用,统一使用cell间和log进行输出。也就是说这样的话呢,即使框架底层的一些日志我想记录,我要调配置文件,我就不用写s log的配置,还要写其他的配置,哎,我只写log一个配置就行了呢,我们统一都让他来用件,那这个能不能做呀?哎,我们也能做,我们来看S首页,首页呢,这我们别看用户手册了,我们看这一块有个叫as点进来在这呢也有一张图,这张图呢就帮我们来解释了,我们想要统一使用怎么办?你看我们这个应用程序,我们以前要用cell for街加log bank,那就是这样,我们先竖着看,我们应用程序呢,我们面向街编程,然后呢,真正的实现我们用的是log bank,但是往往事情不这么美,我们这个应用程序呢,它可能依赖别的框架一大堆,而每一个框架呢,又用不同的日志。比如有些。
02:50
框架用s log,有些呢用log for,有些用加va u log,而我想把这些框架,我让它统一都能使用到cell间,怎么办呢?来,我们可以这么来做,我把其他框架的所有这些日志,哎,我用这些包来替换,首先来看,如果你的框架是log API,你用这个GC这个包来看啊,叫啥替换你的这个log,替换的意思也就是说你要把原框架里边对common log的依赖排除掉,但是我们想想啊,如果说我spring,我现在正在用spring框架,我排除了,我就单说spring,那spring都运行不起来了,他都会报错找不到,因为他在框架的底层,凡是记录日志都要用到log的这些类,而我们都没log包,他就找不到,那怎么办呢?我用一。
03:50
一个新的炸个炸包,这个新的炸包呢,这其实就是一个偷天换日包是吧,狸猫换太子包,然后呢,我们这个包的功能其实就是说跟common斯log一样,Common log里边有啥类,我这里边也有什么,但是呢,我们spring框架把common排除掉了,我引入了这个包,但是我们spring框架里边要用到斯log这个类在这个包里边其实还是有的,然后呢,我们s spring框架就不会报错了,它掉到这一类在我新的包里边有,而新的包真正的实现怎么办呢?它又掉到self阶,Self阶呢又调到真正的实现,那么相当于呢,中间又有一个适配层,包装层,可以把它叫一个包装层,把log你先掉用log API你掉用log over,相当于把log转成你把你原来框架的。
04:50
哎,Java u求log你给我踢掉,然后呢用这个gul to self键,就是呢用这些东西,这些东西呢,就是我们面对不同框架的不同日志框架要转成self尔for阶的中间的转换本,那举一个例子,我们现在呢,我想要用self尔for街加log for接的组合,我日志接口啊,我选择s for接,我的实现呢,我选log for接,还是按照我们以前的用法,哎,我们先竖着来看,那就应该是我程序开发的时候,我面向S尔佛街编程,而赛尔佛街最终呢是用log佛街来做日志记录,但是由于log佛间还不知道S间,我们倒了中间的一个适配层炸包,那如果我们是这么单线来使用没啥问题,但是往往我们在这个应用中又有别的框架在使用别的日志,如果他在使用log键,那就没得说了,我们不用管,但是呢,他使用的是。
05:50
Log或者va log怎么办呢?那就把别的框架的log给我先排除掉,然后呢用它替换,把log给我呢用它替换,然后呢,我们是这种解决方法,那么包括如果说我们想要用cell加我们这个va u log的组合方式,那怎么办?
06:12
同样的,我们竖着来看这一支,还是我们之前说的这个图,哎,你想要怎么用,还是之前我们说的这个图,但是呢,接下来由于我们这个应用里边可能导了其他的框架,我呢就把其他框架的要用的这些日志包我来排除掉,然后呢,我用咱们这个炸包来替换一下,但这个替换到底是怎么办的,我一会可以看到源码,所以呢,我们想要跟其他日志我们都统一起来,我们就要这么来用,我呢把这张图我也来保存起来,保存到我们这个image笔记里边,哎,这有之前这张图,好,我就保存起来,然后呢,我在这记录一下,我们想要统一日志记录也行,哎,你给我这么做,哎,我把这张图片呢,Images。
07:04
下边哎,我们给大家保存了一个这个图。这个图呢,我们官方就说了,你怎么样切换到其他。CTRLC复制它复制来,而这张图的核心,我来总结一句话,我们如何让。如何让系统中,系统中所有的咱们这个日志都统一到,统一到咱们这个间。哎,怎么样让这些日志都统一到CF间呢?哎,很简单三步走,第一步我们先将系统中其他咱们这个日志框架。先排除,排除出去,这个排除呢,就是哎,比如我这个spring,我导spring的时候,我让它别导入科斯log,但是如果我们只做排除,那spring框架可能就运行不起来了,然后我们第二步用中间包,用中间包来替换,替换原有的日志框架,这个中间包的作用就是给我们替换原有的日志框架,哎,它就是我们之前说的一个偷天换日,偷梁换柱,狸猫换太子包是吧,那后来看到源码也会看到,然后呢,接下来第三步,第三步我们再来使用cell放间,自己其他的实现,嗯,再来导入间。
08:36
其他的这个实现我要用log的,那你把其他的给我转换过来,我要用log for街的,你把其他的给我转换过来,所以呢,这就是我们要如何在系统中统一使用到API,当然也是这么来做的,我们后来来看一下里边的源码就行了,好,我们把这个搞亮,这是我们真正来统一使用S节的逻辑呢,先把其他日志排除掉,用中间包替换,然后呢,我们再用S佛节的实现。
我来说两句