[Day 3] SRE - Log写好一点,对团队好一些

LogSeverity

有在写Log的人都知道Log需要被分级,而分级对於问题的除错,是很重要的,当问题发生时可以帮助工程师快速定位。

相信在写go的人都对logrus不陌生

常见的分级为

  • INFO
  • DEBUG
  • WARN
  • ERROR

本篇文章为大家简单介绍Google对於Logging文件导览说明
以下图表共分为九个等级,Severity越大代表影响越严重

NAME Severity 意义
DEFAULT 0 此Log没被指定Level
DEBUG 100 除错或者追踪资讯
INFO 200 例行资讯,例如正在运行的状态或性能
NOTICE 300 正常但是重要的,像是启动, 关闭, 或者异动设定
WARNING 400 警告事件可能造成问题
ERROR 500 错误事件可能造成问题
CRITICAL 600 关键事件会导致更严重的问题或中断
ALERT 700 有人必须立即采取行动
EMERGENCY 800 一个或多个系统已经无法使用

以我们团队来说,我们透过ELK蒐集LOG监控服务捞并判断WARNING等级以上的LOG设为警报,直接推送至警报器。

coding的人就要依照log的Level把相关的Log订好,帮助大家在诊断问题时,提供重要的线索!
通常就是边coding边想,如果出问题时,哪些资讯要写入Log能快速帮助自己找到问题。

再来就是怎麽样算是好的Log?

  • Level分类明确
  • 讯息易懂
  • 夹带在Log的讯息,方便Debug

ex: 如果发生程序执行过慢的时候

第一种Log范例

{
    "level":"WARNING",
    "message":"slow log",
    "now_time":"1631239155",
    "severity":400,
    "time":"2021-09-10T01:59:15.113403016Z"
}

第二种Log范例

{
    "level":"WARNING",
    "message":"ping db slow log",
    "api": "/api/ping",
    "func": "ping",
    "now_time":"1631239155",
    "severity":400,
    "time":"2021-09-10T01:59:15.113403016Z"
}

大家可以看一下这两个Log案例,是不是下方的更让人了解发生在哪呢?
所以説Log的撰写也是蛮重要的一课,在帮助大家快速定位问题的时候,是个非常重要的资料。


<<:  Day 11:批次修改!!

>>:  [Angular] Day11. Attribute, class, and style bindings and Two-way binding

Day32 | 在WebView里使用Router的问题与解法!

大家好,今天是第三十二天,也是赛程结束後的第二天。 昨天介绍了我们会在Webview里使用的套件,今...

[第十六只羊] 迷雾森林舞会X 热线你和我 hotwire 导入

天亮了 昨晚是平安夜 关於迷雾森林故事 水底世界 就在泰迪跳进水中游水的瞬间 水流与泰迪身上的的毛高...

Day6 Android - 元件使用(EditText->Button->TextView)

今天主要要来介绍这三个元件及彼此之间一个简单的应用,首先先来提一下EditText、textView...

Day 05 Line Massaging API- 打造自己的 Chatbot

Line Massaging API- 打造自己的 Chatbot 接下来,如果要在 Azure W...

Day 20 Knative Serving DNS 测试(二)

设定 Networking Layer 参考: https://knative.dev/docs/i...