从零构建通讯器--4.3日志打印实战,优化main函数调用顺序

一:基础设施之日志打印实战代码一
(1)新文件:ngx_printf.cxx以及ngx_log.cxx
ngx_printf.cxx:放和打印格式相关的函数;
ngx_log.cxx:放和日志相关的函数;
函数:
(2)(//ngx_log_stderr() :三个特殊文件描述符【三章七节】,谈到了标准错误 STDERR_FILENO,代表屏幕)服务器一般都是守护进程,守护进程输入都是定位到黑洞区,不往屏幕上输出信息,防止干扰到用户,日志直接输入到文件
ngx_log_stderr():往屏幕上打印一条错误信息;功能类似于printf,都是可变参数
(3)printf的例子说明
printf(“mystring=%s,myint=%d,%d”,“mytest”,15,20);
①根据可变的参数,组合出一个字符串:mystring=mytest,myint=15,20
②往屏幕上显示出这个组合出来的字符串;
(4)ngx_log_stderr()说明和使用的理由:
①提高大家编码能力和理解能力;
②ngx_log_stderr():可以支持任意我想支持的格式化字符 %d, %f,对于扩展原有功能非常有帮助
实现效果如下:
从零构建通讯器--4.3日志打印实战,优化main函数调用顺序
从零构建通讯器--4.3日志打印实战,优化main函数调用顺序
③p = ngx_vslprintf(p,last,fmt,args); //实现了自我可定制的printf类似的功能
真正干正事的是ngx_vslprintf
函数定义:
u_char *ngx_vslprintf(u_char *buf, u_char *last,const char *fmt,va_list args)
ngx_log_stderr(0, “invalid option: “%s”,%d”, “testinfo”,123);
fmt = “invalid option: “%s”,%d”
args = “testinfo”,123
④buf = ngx_sprintf_num(buf, last, ui64, zero, hex, width);
效果:
从零构建通讯器--4.3日志打印实战,优化main函数调用顺序从零构建通讯器--4.3日志打印实战,优化main函数调用顺序
⑤错误代码和错误信息也要显示出来
p = ngx_log_errno(p, last, err);

二:设置时区
我们要设置成CST时区,以保证日期,时间显示的都正确
a)PST【PST美国太平洋标准时间】 = GMT - 8;
b)GMT【格林尼治平均时间Greenwich Mean Time】等同于英国伦敦本地时间
c)UTC【通用协调时Universal Time Coordinated】 = GMT
d)CST【北京时间:北京时区是东八区,领先UTC八个小时】
三:基础设施之日志打印实战代码二
(3.1)日志等级划分
划分日志等级,一共分8级,分级的目的是方便管理,显示,过滤等等;
日志级别从高到低,数字最小的级别最高,数字最大的级别最低;

(3.2)配置文件中和日志有关的选项
继续介绍void ngx_log_init();打开/创建日志文件
介绍ngx_log_error_core()函数:写日志文件的核心函数
ngx_slprintf
ngx_vslprintf

四:捋顺main函数中代码执行顺序

上一篇:使用g编译时,哪个C标准是默认值?


下一篇:VS调试再次遭遇“应用程序中断模式”问题,附解决方法