00:00
好,同学们,那么接下来呢,我们大家一起学习一下这个access log,呃,在学习access log之前啊,我们还需要了解额外的另外一个模块。呃,这个模块呢,嗯。其实也没有太大的必要去让这个,呃。N实现啊,其实在在这个很久以前,N没有这个模块的时候,有很多站点呢,就。已经这么去做了啊,这这是啥呢?就是去显示一个一乘一像素的透明的像素块。呃,这个像素块呢啊,就是用来访问呃N这个服务器的,就是我们之前在上节课给大家看这个,呃,像京东啊,它引用的一个GIF,但是那个图呢,其实也没显示出来,这就是因为它只有一乘一的像素,呃文件呢,返回的特别小,基本上就没有基基本上是肉眼,呃看不见的,那主要就是为了把这个请求打到NG上,也来收集这个用户的一些行为信息,那这个模块它是内置在NG里的啊,那我们把它简单的配置起来。呃,在这个我们的配置文件里,然后呢,找到一个location,咱们就用它官方的这个实例,其实就可以。
01:09
嗯,Server在这上面我们随便加一个。啊,就是它这是下划线点GIF,然后empty GIF,我们看看效果。保存之后呢?还是重启一下服务。然后访问一下这个location。下划线点GIF。来看,呃,这个我把它放大了,这是放到最大,大家才能看见这么一个小小的方块,但是呢,这个请求其实已经被我们记录下来了,那么接下来看看这个请求,呃,记录下来这个格式是啥样的。这种像素块呢,多数都是直接内嵌在咱们的网页里的。
02:02
呃,随便找一个地儿给它给放进去,那么他就会,呃,这个这个请求我们的这个NG的服务器。呃,具体放的方法就是隐秘src正常的去进行一个图片啊,这个日志呢,我们看看在这儿logs。有两个alo和这个access log,现在这个access log有点大,A log有点大,我们全全都把它给删了,然后让它重新去给我们生成一个。嗯,再重启一下。大家看出来了,但是access log呢,现在是零,现在没有没有东西。对吧,嗯,那是不是因为我们没有访问呢?来我们再重新的去刷新一下,来看你多刷几下。然后再看这个access log。来看这儿。这会儿就已经有了,对吧,呃,在这儿呢。
03:01
呃,这是默认的,呃,我们的access log的配置,因为我们看啊,现在在这个配置文件里,我们一一行和这个日志相关的配置都没有,甚至连打开日志的配置都没有啊,这个是默认情况下,NS呢,就已经把这个access log和error log都已经打开了,然后这里边的这个格式,基本的格式前面显示的是44.1,这是我客户机的IP地址。对吧,然后具体的请求的时间,然后用哪种方式请求的,请求的uri是啥,采用的什么协议,然后返回的这个,呃,这个状态码HTV状态码啊,他现在是304是吧。呃,然后这个浏览器的呃,一些信息,这叫user agent啊,这是基本的信息,那这个呃请求呢,它就一行一行的全都给我们记录下来了,那这下边儿还有一个这个这个是呃,我们这个图标啊,就是这个浏览器呢,它希望每一个站点呢都有一个图标用来。
04:00
放在这个,比如桌面的快捷方式啊,或者是在它标签页上就写着这么一个,呃,小小的这个图标啊,这个icon图标,这是浏览器帮我们请求的。啊,这个请求是浏览器自己发起来的,我们手动其实没有发啊,他帮我们额外去请求这么一个东西,但这也是没找着啊,没有这个东西没有呢,就还是这个tomcad给我们展示出来了,这就是日志的基本格式啊呃,那我们在查看日志的时候,由于呢,它会一行一行的更新,你看比如我又刷了几下。那如果用这种记事本的方式去看日志,其实是很不方便的,那刷完之后呢,呃,他没给我们显示出来,那这会儿我们还可以用Linux的另外一个命令叫T。去单独去看日志,这也是我们看日志的时候比较常用的一个工具,然后杠F呢,它就会给我们滚动到最后一条,然后在user log in log,然后access log。来看这儿。
05:00
我们把它缩的稍微小那么一点,要不这屏幕放不下,然后呢,啊,这会儿如果我们再刷新一下,看看它是不是给我们把能把这个最新的日志给打印出来。诶,大家看。现在的这个NG呢,呃,是每请求一次都会给我们把这个日志呢打印出来,对吧?呃,那个打印出来说明什么呢?它是不是已经呃直接给我们写到这个磁盘上了。这根据不同的NG的配置不同,呃,它会有不同的默认配置,指的就是它往磁盘里边去写这个写入文件的时机,那如果要是我的系统并发量比较高的话。没有,没有一个请求都去向系统去追加这么一条日志记录,那很显然这样效率是非常低的,对吧?呃,其他的NG版本呢,它不一定是这个,每次请求在默认值的时候啊,它都会往里去写,有很多的这个版本,它默认是呃,这个这个。这个有一个缓冲区啊,它会缓冲一下,然后批量去切入。
06:04
啊,先在内存里边呢,创建一个这个,呃,这这么一个专门去承载日志的这么一个缓冲区,往里边写去,写满之后呢,再去往这个磁盘中去记录,那我们接下来看看这个具体的这个配置啊,我们我们的这个系统如果上线的话,是肯定需要缓冲区的来看,现在是零缓冲写一条,就是有一个请求呢,他给我们写一条,有一个请求给我写一条啊这是效率非常低,那这个缓冲区怎么配呢?我们看看。官方的文档。在这个access log,其实这个学习到这个阶段啊,这里边儿还有很多很多其他的模块我们没有讲到,那同学们可以自己扩展去,一边跟着文档一边去扩展去学习啊这个。自己能够学习这个能力啊,一定要慢慢的培养起来,光靠老师每一个一个的模块,每一个一个的功能,或者每一行行代码去教大家,这只能是呃,给大家一些这个呃,这个这个。
07:02
成这个成功的一些配置吧,呃,不能引发你自己的这个学习的这种这种这这种这个能力,一定要自己有自己学习能力啊。因为它这个软件呢,是不断的更新的,包括有一些新的软件,老师如果没讲到的话,可能自己需要硬啃的时候,也得有这个能啃下来的这个能力。呃,这个日志写缓冲的这个配置呢,它在这就access log相关的配置,这后面呢,有好几个配置对吧?啊,其中就有这个buffer,我们在这儿呢,就可以去配置一下这个buffer啊,让他别直接给我写到磁盘里。呃。我看看这有没有这个配置的应力。啊,在这儿呢,好像是没有是吧。这这有这有一行,我们把它给粘过来。
08:00
呃,然后给它放到这h hittp下,Access log,给它放在那儿呢,我们换一个地儿,就NG X log。单独放一个目录啊,NG X log,呃,这是一个别名啊,呃,相当于一个命名空间,跟我们跟我们之前用的一个zoom啊,是一样的啊,它这个别名里边呢,它配置了日志记录的格式。我们把这个呢,也给它粘过来。在这个别名这呢,你可以随便去起,只要和这个lock me匹配上就可以,比如我就叫test,在这儿呢也叫test,然后保存在这里边有一个buffer,这个buffer就是呃,往磁盘写的时候,这个写缓存啊,我们先配置一个32K,然后我们重启一下服务看看,当然了,你前提是得先把这个目录给它给建出来,不然它会报错的。MKDRP这就递归的去建子目录了,但是现在没有子目录是吧,重启一下服务,呃,服务重启了,然后我们再去执行这个T,去看这个日志。
09:14
然后再刷新,你看它有没有缓存了啊。走。诶不要怀疑,感觉好像没点到,其实已经点到了,大家看。他怎么刷都没有对吧。为什么呢?因为它没积攒到这个我们所配置的缓存的,呃,这个空间当记到32K的时候,它才会去帮我们向磁盘里边去,呃,写助这个缓存,这是这个磁盘写缓存啊,那什么时候它会往里写,那如果这会儿宕机了怎么办啊,除非是断电的情况下,那么这个buffer有可能会丢失啊,除非断电,当我在重启的时候,它也会向这个呃文件里边去记录日志。
我来说两句