日志目的
提供系统运行中间行为的分析的数据支持。一般会记录访问信息、系统运行行为,业务操作流程中间信息。
db主要是结果信息,日志是产生结果的中间过程
日志分类
1.访问日志: access.log 系统稳定期&总体分析使用 尽量用gz输出2.工程未处理日志: project.log 目标是越来越少
3.业务日志: *biz.log 故障排查
4.性能日志: *perf.log 目前基本可忽略不用,淘宝中间件提供的比较多类似功能(hsf,tddl)
日志格式
一般建议日志采用规范化形式,主要是在需要采用程序订正程序时可以采用日志作为输入,其规范化方便程序编写。
个人对日志的定义如下:
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:异常内容,该信息主要在分析具体日志输出时才使用
日志归集
如果可以,建议日志通过工具定期归类到日志分析中间平台,不要每台服务器分析;
简单的一个日志架构图: