Upgrade to Pro — share decks privately, control downloads, hide ads and more …

log experienct

log experienct

A presentation in my group.
Something about why we need log? Why we need different Log Level. And How we define the Log level..
Something from my work experience

陈宗志

July 25, 2014
Tweet

Other Decks in Programming

Transcript

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

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

  3. 要求 • 不能因为打印⽇日志影响服务性能 • 看到出错⽇日志⽴立刻系统哪⾥里出问题

  4. 不能太多, 不能太少

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

  6. 解决⽅方案 • ⽇日记分级别 • 线上⽀支持动态⽇日志级别调整 • 每⼀一个请求从客户端到 Server 端有⼀一个唯⼀一的 Id

  7. ⽇日志级别 • Debug • Trace • Info • Warn •

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

  9. Trace • ⽤用来记录程序某些流程的执⾏行, 在调试的时候使⽤用, 默认是不开启的. • Trace 与 Debug不同在于线上出问题的时候, 我们

    可以开启Trace⽇日志, Trace⽇日志必须有助于我们定 位问题. ⽽而不会去开启Debug⽇日志, 因为Debug⽇日 志默认只是写这⼏几⾏行代码的⼈人看的
  10. Info • ⽤用来记录每⼀一个的初始化的过程, 或者⼀一个请求的 访问. 主动的告诉我们服务是否正常运⾏行. • ⽐比如在Bada⾥里⾯面, Bada启动的过程会记录Info ⽇日

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

    影响的只是这⼀一个请 求. • 在Bada⾥里⾯面, ⽐比如bada_manager:init_db 的时候, 传参数没有传⼊入是否⽀支持版本号.
  12. Error • ⽤用来记录服务端出现了问题了, ⽽而且这个问题对我 们的服务造成了影响, 服务端可能压⼒力特别⼤大了. 我们必须⻢马上上去查看有什么问题. • ⽐比如在Bada⾥里⾯面, newBinLogFile

    的时候⽆无法⽣生成 ⼀一个新的Binlog, 或者我们bada_kv 的message queue 超过的⼀一定的⻓长度, 这个时候可以服务, 但 是对服务影响是特别⼤大的.
  13. Fatal • 表⽰示我们的服务出现⼤大问题了, 或者这个是我们服 务Down掉之前打出的⽇日志. 打出这个⽇日志的时候 ⼀一般服务已经挂掉, 或者挂掉⼀一部分了. • ⽐比如在Bada⾥里⾯面,

    Binlog Merge的时候需要Merge 超过1000000 条⽇日志的时候是⽆无法Merge的. lerder在找同步点的时候, 找不到同步点.
  14. Request ID • 为什么需要?

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

  16. Tips • ⽇日志虽然是⼩小事, 需要认真对待 • 关于⽇日志级别, 没有对错, 但要团队有明确的规定, 什么样的错误打⼊入什么级别⽇日志 •

    ⽇日志需要不断的调整, 努⼒力做到完美⽇日志 • ⽇日志格式⼀一定要统⼀一, 便于处理
  17. Thanks