00:01
好,我们先来说一下这个滚动日志啊,就什么情况下我们会使用滚动日志,那这个呢,就是之前我们啊给那个比利时的一个公司,原来我在一个法国的企业啊,在一个外企,然后呢,我们的客户呢,都是欧洲客户,我们给比利时的一个公司呢,去做一个项目啊,这个项目运行了一段时间之后呢,它就是总是突然出现宕机的现象,就是它宕机是怎么宕机,那一开始不宕机啊,就是一开始第一年的时候运行的都很好。然后呢,突然过隔了一年多的时候呢,突然有一天这个系统就开始宕机,那宕机之前呢,我们没有对这个系统做任何的就是系统的修改,也就是说没有去说因为去啊增加新功能啊,引入一些新bug,那他就突然开始宕机,那我们就在找原因了,为什么就发现呢,每一次宕机呢,都是因为系统的内存耗尽,然后导致的,然后我们就要去找一找是什么原因导致这个系统的内存耗尽了,然后呢,很快呢,就发现是因为日志导致系统的内存耗尽,为什么呢?因为我们当时配置的日志,这个日志呢,就像这样去配了哈,没有写滚动日志,没有写滚动日志意味着什么,就这个日志文件里面的这个日志内容啊,会不断的往里写,随着系统的运行,这个日志文件的日志内容呢,会越来越多,然后导致这个本身的这个文本文件呢,就会越来越大,那么大家想我们的系统在往我们的这个日志文件当中写文件的时候,实际上它就是一个流的处理。
01:32
对不对,他在往这个文件当中写日志的时候呢,他先要把这个文件呢,读到内存当中,然后从内存当中呢,往这个文件的末尾呢,去追加新的日志,然后再把这个新的日志的内容呢,再写到磁盘当中啊所以周二复始的话呢,那么这个日志越来越大的时候,那肯定会有内存溢出的那一天,那这样的话呢,就导致我们的系统一启动就宕机,一启动就宕机,好这就是滚动日志的应用,很典型的一个应用场景了,那所以滚动日志是什么,大家应该能猜到了,就是呢,通过啊不断的产生新的日志啊,来记录我们的日志文件,但是我们产生新的日志一定要有一个策略,不能说每一次进入日志的时候都产生新日志,那你这样的话,其实效率也比较低,为什么?因为你日日志的内容,比如说像现在刚写了两三行,或者是三五行的时候,他还不算太多,你没有必要写一个日志就创建一个文件,你你要是这样的话呢,那我们未来目录下面的日志文件。
02:32
将会特别多啊,但目录下如果文件特别多的话,在Windows操作系统当中也会出现问题啊,所以呢,我们就得去配置这个日志,怎么配置呢?就是当它达到一定级别的时候,我们再去创建新的日志啊,或者是说我们会有不同的策略,那一般情况下呢,我们会有两种策略,一种呢是时间策略,一种呢是体积大小策略。什么叫时间策略?比如说今天我创建一个日志,今天的所有的日志都写在一个文件中,然后到明天的时候,到这个零点准时00:00:00的时候,我再有日志的话呢,我就创建在新的日志文件当中啊,所以这个是基于时间和日期的滚滚动策略,那么还有一个呢,就是基于日志文件大小的滚动策略,比如说呢。
03:18
我这个日志呢,他这个啊,每一天都要产生非常大量的日志,我一天的日志我都要给他拆到不同的这个日志文件里去处理,但是多大合适呢?比如说500兆我就要拆一个日志,我可能每天要产生好几个G的日志,那你不能都写在一个文件里,那我500兆拆一个日志,那么这一天我就会拆除不同的日志,所以这个呢,是基于日志大小的滚模策略,那这样的话呢,我们就可以去啊根据一些呃特殊的节点去配置我们的这个滚动策略了,那么这面呢,我们用到一个新的a panda,这个panda呢叫rolling fair panda啊,叫滚动文件a panda啊,之前我们学的是fair a panda是吧?然后这个滚动文件a panda呢,是在这个fair panda基础上的一个扩展,叫做。
04:06
肉很好看的,然后我们呢,先把这个给它复制过来。我们把它写在前面的我们文件日志的下面,好,那这个rolling fair panda呢,它有啊这样的一些节点,首先呢,第一个节点大家都理解,就是我日志输出的目录位置对不对,我要输出到log roll里面啊,然后接下来呢,第二个节点大家也理解,就是我日志输出的格式,以及录制日志输出的编码方案,然后第三个节点我们来看一下,叫rolling policy,叫滚动策略,这个滚动策略呢,我们来基于的是time based rolling policy叫做基于时间的滚动策略,那么这个基于时间的滚动策略我们怎么去定义呢?就是这样去定义,每一个日志记录完毕之后,比如说今天是2020年的,嗯,假设说是1月1号啊,那这样的话,呃,22021年了,现在哈,假设说今年是2021年的1月1号,那么那我这个地方呢,就会产生一个log rolling,然后。
05:15
2021杠零幺杠零幺的这么一个日志文件啊,作为一个日志备份,当然了,现在是2021年的半半夜24点,也就是啊,1月2号的零点啊,1月1号到24点的时候呢,就会针对1月1号产生一个日志啊,然后新的日志,1月2号的日志是什么呢?是这个好到1月2号的24点的时候呢,针对1月2号的日志呢,又产生了这样的一个备份文件,然后又产生了一个针对1月3号的新的日志,就是这个日志了,所以呢,每当这一天结束的时候,那么就会以这一天作为日期后缀啊,生成一个啊归档日志,那么放到我们的info这个目录下啊,然后呢。
06:00
新的一天的日志,那就会生成这个啊,以这个原来的名字生成新的一个空日志文件啊,原始的日志呢,就被归档到这个里面了,所以这个呢,就是基于时间的滚动日志啊,基于时间的滚动日志了。好,然后这个是什么呢?这个就是归档日志文件保留的最大数量啊,那因为我们的这个日志啊,也不能无限制的保留,是不是当你的这个系统当中的日志太多的时候,它不但嗯占这个磁盘空间,嗯,它在Windows操作系统当中单目录下文件太多,它其实也影响文件的读取效率的啊,所以说呢,我们的就可以规定我这日志保留多少天,那你可以自己规定,比如说我日志就保留15天啊也行,我日志保留一个月,那就写30天对吧,保留一年写365都可以啊,所以这个呢是我日志的保留的天数,呃,这个这个相当于数量,因为我们每一天是一个日志嘛,所以这个呢,就相当于保留的这个最多能保留多少天的日志,对吧?保留的日志的数量。
07:03
好,然后那这块呢,嗯。我们就,嗯,一会儿一起测啊,一起测,我们跟谁一起测呢?跟下面这个策略就是。触设置触发滚动的时机啊,我们再来添加一个,一般情况下我们都是这样去配合着去写的,这个代码放在哪呢?Time based啊,File naming and try。呃,Trigger in policy哈,放在这个rolling policy的子节点下。好在这个地方有个rolling policy,在这个地方呢,我们再继续配它的进一步的策略,那这个进一步的策略是什么呢?还加上size size and time based,也就是说前面我们只是time based,现在呢,我们在time的基础上再加上size,什么意思呢?就是如果这一天的日志非常大的话,那么我呢,就比如说一般情况下这1KB有点小啊,就500。
08:01
500兆哈,500兆一个日志文件啊,500兆一个日志文件,当然了,因为现在500兆的数数量日志文件那个内容实际上就特别多的,我们测起来不太好测,所以呢,我就给它改成1KB,这样的话,一会咱们测的时候呢,比较好测,当我的日志达到1KB的时候,我就干嘛呢,我就再生成一个文件,而这个文件的命名策略是什么呢?是这样的。就是呢,我要把我之前的那个命名策略呢,稍微给它完善一下,加上一个。就是点百分号I,这是一个占位。加到这哈,加上点百分号I,所以说呢,我这个日志呢,就是比如说2021年的1月1号,然后呢,第零个日志,2021年的1月1号,第一个日志2021 2021年的1月1号,第二个日志明白哈,所以呢这个呢就是我们的。一个具体的一个完整的滚动日志的一个命名策略了啊,前面呢是加首先加上日期啊,第二个呢,再加上索引啊,这样的话呢,我们一天可能会产生若干日志啊,所以这是我们的日志的一个生成策略,然后那接下来呢,我们这个写好了之后呢,我们就来。
09:18
去把它运行一下。好,那这面呢,我们就启动成功了,启动成功了之后呢,我们来看一下啊,我这面呢,因为要记日志嘛啊,我我再来看一下啊,我把它改一下吧,改成第一啊,因为PD里面的日志太少,第里面的日志稍微还多一些。要不然我们。这个攒成1KB的日志其实也是不太容易的。好,这样的话呢,我们就有了in for日志,然后这面呢,我就多刷新几遍啊,多点几下,这样的话,我们的日志呢,可能输出的内容呢,就会相对多一些,好这样有了多非常多的日志之后呢,我们来看一下我们的日志目录。
10:16
好,现在我这个日志目录里面呢,就有一个log log rolling这个日志了哈,我们把它打开。等一下啊,看看寄到哪去。是不是叫log rolling啊,我看一下控制台啊。啊,我知道了,咱们这个dev日志啊,它是不是没有写到文件当中啊,所以呢,你还得在这个地方,就是呃,我还给它改成prod,因为改成prod之后呢,他才写到文件当中,但是pro那个那个日志太少了那种,所以那怎么办,那我干脆索性呢,就把DV啊,就这个DV。DV里面再加上一个文件日志。
11:00
把这个复制一下,复制到这个位置是不是啊,把它运行一下。好,然后接下来呢,我们在这个地方我们再多刷几遍,就让它产生大于1KB的日志,1KB呢,就是1024B哈,好像也差不多了,然后呢,咱们来看一下这面刷新一下。开心一下。现在是有文件日志吧,更新了吧。稍等啊,我看一下他打勾打哪去了。呃。D是D环境吗,现在。
12:06
我再重新启动一下啊,看一看咱们这个环境对不对,首先呢,这面环境是第一位对吧,然后这面呢是第一位是test啊对,然后这个日志就我们的是滚动文件,是不是这块疏忽了啊,因为刚才我们这个文件日志就单纯的往log里面记录,但是我们这个是滚动文件对不对,叫rolling file啊,所以问题出现在这。那所以呢,我们得把这个rolling file配置到这个位置,这样的话才能记住对吧?啊,这是根本的原因。这样就好了哈,嗯,这回我们再来测一下,先看一看写没写进来。好,刷新一下应该已经差不多行了。
13:07
好,大家看这个呢,就写进来了,写进来之后呢,因为刚才我们的日志呢,其实已经超过了1KB了,所以呢,多余的日志呢,就记录到了这个里面,这个是归档日志,这个in目录是归档日志2021年的2月22号,然后呢点零点log是吧,然后我如果再多写一点,那现在的这个日志呢。就是外层的这个日志。这个日志啊,这是真的是实时日志。就是它了啊,实时日志。我们在ICU。你看实时日志呢,实际上为什么变少了呢?因为它那个已经超过1KB了啊,刚才的那些呃,已经写好的超过1KB的日志呢,又归档了,然后这块呢,是最后两条日志啊,超过的部分,所以呢,我们再来看一下这个印缝里面是不是又多了一个记录啊啊,所以这个就是归档日志了,那么所以这块呢,就是我们所说的滚动日志的一个配置啊。
我来说两句