17
志重构些得 陈宗志

Log experience

  • Upload
    -

  • View
    288

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Log experience

⽇日志重构⼀一些⼼心得陈宗志

Page 2: Log experience

⽇日志是什么

• ⽇日志⽤用来记录系统运⾏行的状态, ⽤用户的⼀一些操作. 是系统⼀一个重要组成部分

Page 3: Log experience

要求

• 不能因为打印⽇日志影响服务性能

• 看到出错⽇日志⽴立刻系统哪⾥里出问题

Page 4: Log experience

不能太多, 不能太少

Page 5: Log experience

“看到⽇日志⽴立刻知道系统哪⼀一个模块出问题”

Page 6: Log experience

解决⽅方案

• ⽇日记分级别

• 线上⽀支持动态⽇日志级别调整

• 每⼀一个请求从客户端到 Server 端有⼀一个唯⼀一的 Id

Page 7: Log experience

⽇日志级别• Debug

• Trace

• Info

• Warn

• Error

• Fatal

Page 8: Log experience

Debug

• ⽤用来程序员本⾝身在调试代码的时候写的⽇日志, 默认是不开启的

Page 9: Log experience

Trace

• ⽤用来记录程序某些流程的执⾏行, 在调试的时候使⽤用, 默认是不开启的.

• Trace 与 Debug不同在于线上出问题的时候, 我们可以开启Trace⽇日志, Trace⽇日志必须有助于我们定位问题. ⽽而不会去开启Debug⽇日志, 因为Debug⽇日志默认只是写这⼏几⾏行代码的⼈人看的

Page 10: Log experience

Info

• ⽤用来记录每⼀一个的初始化的过程, 或者⼀一个请求的访问. 主动的告诉我们服务是否正常运⾏行.

• ⽐比如在Bada⾥里⾯面, Bada启动的过程会记录Info ⽇日志, 每⼀一个客户端请求会记录⼀一条Info⽇日志.

Page 11: Log experience

Warn

• ⽤用来记录服务出现问题, 但是这个问题不是由于服务本⾝身的问题⽽而产⽣生的, ⽽而是由于⼀一些参数错误产⽣生, 或者有些⺫⽬目录不存在. 产⽣生Warn⽇日志的时候, 默认是不会影响我们的服务, 影响的只是这⼀一个请求.

• 在Bada⾥里⾯面, ⽐比如bada_manager:init_db 的时候, 传参数没有传⼊入是否⽀支持版本号.

Page 12: Log experience

Error

• ⽤用来记录服务端出现了问题了, ⽽而且这个问题对我们的服务造成了影响, 服务端可能压⼒力特别⼤大了. 我们必须⻢马上上去查看有什么问题.

• ⽐比如在Bada⾥里⾯面, newBinLogFile 的时候⽆无法⽣生成⼀一个新的Binlog, 或者我们bada_kv 的message queue 超过的⼀一定的⻓长度, 这个时候可以服务, 但是对服务影响是特别⼤大的.

Page 13: Log experience

Fatal

• 表⽰示我们的服务出现⼤大问题了, 或者这个是我们服务Down掉之前打出的⽇日志. 打出这个⽇日志的时候⼀一般服务已经挂掉, 或者挂掉⼀一部分了.

• ⽐比如在Bada⾥里⾯面, Binlog Merge的时候需要Merge 超过1000000 条⽇日志的时候是⽆无法Merge的. lerder在找同步点的时候, 找不到同步点.

Page 14: Log experience

Request ID

• 为什么需要?

Page 15: Log experience

Request ID

• ⺫⽬目前Request ID 是客户端的 hostname:port

Page 16: Log experience

Tips

• ⽇日志虽然是⼩小事, 需要认真对待

• 关于⽇日志级别, 没有对错, 但要团队有明确的规定, 什么样的错误打⼊入什么级别⽇日志

• ⽇日志需要不断的调整, 努⼒力做到完美⽇日志

• ⽇日志格式⼀一定要统⼀一, 便于处理

Page 17: Log experience

Thanks