日志规范
日志模型
日志是描述系统行为的重要手段. 棱镜内部, 日志被作为系统监控, 问题定位, 数据分析的重要工具。
我们可以把整个系统看成多个模块(module)构成, 每个模块是一个可单独运行的实体, 比如ODP环境中的一个实例, 或JAVA/C++中的一个process. 模块间以Client/Server的模式通信, 一个模块会以RPC的形式调用另外一个模块, 在这种情况下, 调用RPC的为client, 被调用的模块为server. 因此系统中一般存在三种形式的日志:
- Server Log server端产生的日志. 该日志往往不包含业务相关信息. 只包含该模块入口的基本信息.
- UI Log 业务进程产生的日志, 业务进程将调试信息, 业务特定信息, 通过UI Log的方式打印.
- Client Log 调用RPC的日志, 一般包含RPC结果, 耗时, 协议等信息.
Server Log 和 Client Log 主要用来分析模块间依赖相关的功能, 如日志定位, 远程调用失败. 而UI Log主要用来对接口进行监控, 数据分析等, 包括cost监控, qps监控, 错误率监控等.
UI log | client log | server log | |
---|---|---|---|
cost | y | n | y |
qps | y | n | y |
上下游串联 | y | y | y |
错误率监控 | y | n | n |
ui日志规范
建议每个请求一条NOTICE(INFO)级别日志. 在请求结束打印. 如不能提供唯一一条, 也需要提供一条能通过正则匹配的NOTICE(INFO)级别日志. 非预期结果用WARNING级别. 导致系统不可用错误使用FATAL级别日志.
格式: {level}: {timestamp} [ optime={optime} product={product} subsys={subsys} module={module} logId={logId} key={value} … ]
</tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tr> </tbody> </tr></thead></thead></table>
NOTICE: 09-09 14:26:32 usercenter * 45785 [logid=1591985286 filename=/home/work/orp/php/phplib/saf/base/Log.php lineno=28 errno=0 optime=1441779992.210 client_ip=10.202.147.21 local_ip=10.202.68.39 product=nuomi subsys=usercenter module=usercenter uniqid=4214836626 cgid=0 uid=0 passUid=1643578291 bduss= cuid= tn= channel= s= appid= version= ip= pageService=Service_Page_Setting_Phone redisCostUsercenter=0 retErrorNo=0 un= mobilephone= email= baiduid= url=%2Fusercenter%2Fapi%2Fphone refer= uip=10.202.147.21 ua=RAL%2F2.0.2.1%20%28internal%20request%29 host=sh.api.int.nuomi.com cost=2 errmsg=]
server log
logid
spanid
status
host
server_addr
server_port
client_addr
request
msec
request_time
level | 日志级别 | 是 | string | NOTICE | ODP框架: NOTICE/WARNING/FATAL, Java框架 INFO/WARNING/FATAL |
timestamp | 时间戳 | 是 | YY-MM-DD hh: mm: ss/MM-DD hh: mm: ss | 09-09 14:26:32 | |
logId | logid | 是 | string | 1591985286 | 字段名现阶段不统一, 建议统一使用logid |
optime | 记录日志时间 | 是 | second.ms | 1441779992.210 | |
product | 产品 | 是 | string | metis | |
subsys | 子系统 | 是 | string | radar | |
module | 模块 | 是 | string | tester | |
uri | 当前页面url | 请求级别日志必须 | string | %2Fusercenter%2Fapi%2Fphone | |
refer | 前链url | 否 | string | - | |
cost | 请求耗时(ms) | 请求级别日志必须 | int | 45 | |
retErrno | 返回错误码 | 请求级别日志必须 | int | 0 | 0正常, 非0错误码 |
errDetail | 描述信息 | 请求级别日志必须 | string | format error | |
字段 |
描述 |
是否必须 |
格式 |
举例 |
说明 |
---|