日志部分

发布时间 2023-04-02 21:43:55作者: feifei102

简历:实现同步/异步日志系统,记录服务器运行状态

 

一、概述

1、什么是日志系统

记录服务器运行状态、错误信息、访问数据,实现按天分类、超行分类,支持同步、异步

2、同步/异步日志简要概述

同步日志异步日志区别在于写入操作是否是阻塞的。

同步写入会阻塞当前线程,直到写入操作完成,简单但高并发场景下,会阻塞线程执行。

异步写入,不会阻塞当前线程,而是把写入操作交给另一个线程处理,当前线程继续执行其他任务。

3、实现方式

同步:格式化输出内容,信息写入日志文件

异步:格式化输出内容,信息写入阻塞队列,创建一个写线程,从阻塞队列取出内容写入日志文件

4、日志分级

本项目把日志分成了四个等级:DEBUG、INFO、WARN、ERROR四种级别的日志

DEBUG、WARN都是在调试时使用,实际运行不会打印出现

INFO服务器运行记录

ERROR出现错误

二、比较同步/异步

1、代码中如何判断是同步/异步

通过初始化是否设置阻塞队列大小来判断,0为同步,大于0为异步

三、日志内容

1、日志名

时间+

2、实际日志举例

(1)info:大部分都是info

2023-03-18 14:39:40.042918 [info]: timer tick  //时间片
2023-03-18 14:39:41.259188 [info]: deal with the client(192.168.18.1)  //记录访问的客户端ip
2023-03-18 14:39:41.259729 [info]: adjust timer once   //调整定时器
 
2023-03-18 14:39:41.259873 [info]: 获得1行http行:GET / HTTP/1.1  //HTTP报文
2023-03-18 14:39:41.260927 [info]: 获得1行http行:Connection: keep-alive    //HTTP报文
2023-03-18 14:39:41.260939 [info]: 获得1行http行:Cache-Control: max-age=0    //HTTP报文
2023-03-18 14:39:41.260946 [info]: oop! unknow header Cache-Control: max-age=0     //HTTP报文未知
 
2023-03-18 15:02:36.823946 [info]: request:HTTP/1.1 200 OK  //HTTP响应写入,写入分行
2023-03-18 15:02:36.823963 [info]: request:HTTP/1.1 200 OK  //HTTP响应写入,写入分行
Content-Length:586
2023-03-18 15:02:36.823972 [info]: request:HTTP/1.1 200 OK  //HTTP响应写入,写入分行
Content-Length:586
Connection:keep-alive
2023-03-18 15:02:36.823979 [info]: request:HTTP/1.1 200 OK  //HTTP响应写入,写入分行
Content-Length:586
Connection:keep-alive
2023-03-18 15:02:36.826146 [info]: send data to the client(192.168.18.1)    //发送到客户端ip