ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-04-30 23:58:40  阅读:201  来源: 互联网

标签:log 4.3 通讯器 函数调用 stderr printf 日志 ngx 函数


一:基础设施之日志打印实战代码一
(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,对于扩展原有功能非常有帮助
实现效果如下:
在这里插入图片描述
在这里插入图片描述
③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);
效果:
在这里插入图片描述在这里插入图片描述
⑤错误代码和错误信息也要显示出来
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函数中代码执行顺序

标签:log,4.3,通讯器,函数调用,stderr,printf,日志,ngx,函数
来源: https://blog.csdn.net/weixin_43679037/article/details/116305633

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有