log系统的基本规范

日志目的

提供系统运行中间行为的分析的数据支持。一般会记录访问信息、系统运行行为,业务操作流程中间信息。

db主要是结果信息,日志是产生结果的中间过程

日志分类

1.访问日志:                 access.log         系统稳定期&总体分析使用 尽量用gz输出
2.工程未处理日志:     project.log  目标是越来越少
3.业务日志:                 *biz.log            故障排查

4.性能日志:                 *perf.log           目前基本可忽略不用,淘宝中间件提供的比较多类似功能(hsf,tddl)


尽量压缩1,强化3;2、4弱化;

日志格式

 一般建议日志采用规范化形式,主要是在需要采用程序订正程序时可以采用日志作为输入,其规范化方便程序编写。

个人对日志的定义如下:

opresult:tag:input:output:desc:exceptionn

opresult:即操作结果,可以是2状态结果:true、false;也可以是多状态:1、2、3、4;但是需要明确的是这个日志是针对业务逻辑的结果,区分日志本身的信息级别

tag:唯一标识日志的标记,建议使用package+class+method,由于package比较长,建议使用通过用概念表示,如screen、action、control、service、biz、dao等分层结构概念

input:系统入参,比如用户的操作输入,系统携带的参数;需要注意的是输入尽量不要用key-value,直接使用value接口,因为tag已经表明了具体的方法,input及tag的输入,所以本身已经语义化。同时由于log的安全性比较低,因此对重要信息采用hash或者隐藏等方式处理。

output:系统出参,基本和output基本一致,但是要求能不需要输出到日志就不输出;

desc:简单描述该记录的内容,建议用规范化的结果,不要随便描述

exception:异常内容,该信息主要在分析具体日志输出时才使用

日志归集

如果可以,建议日志通过工具定期归类到日志分析中间平台,不要每台服务器分析;


简单的一个日志架构图:







你可能感兴趣的:(观点)