日志规范

写在前面

该文章只考虑了5层日志级别,且适用于初步的日志规范,只解释了何时记录日志、日志应该记录哪些、需要注意的几个基本问题。如果需要了解最佳的日志实践/规范,推荐以下文章:
知乎,最佳日志实践
王健:最佳日志实践

日志的级别

  • ERROR
      ERROR是最高级别错误,反映系统发生了非常严重的故障,极有可能影响系统/程序的正常使用。
      对于这类错误,要求将错误的细节记录在日志中,方便后续人工回溯解决。

  • WARN
      WARN是低级别异常日志,反映系统在业务处理时触发了异常流程,但是这类错误并不影响系统/程序的正常使用。
      对于这类错误,同样要求将错误的细节记录在日志中。

  • INFO
      INFO日志主要记录系统关键信息,旨在保留系统正常工作期间关键运行指标。
      建议把初始化系统配置业务状态变化信息,或者用户业务流程中的核心处理记录到日志中,方便日常运维工作以及错误回溯时上下文场景复现。

  • DEBUG
      DEBUG日志主要用于开发阶段的调试帮助。
      建议记录起到调试作用的信息或者其他等级不方便显示的信息,包括参数信息调试细节信息返回值信息等等。

记录时机

总结几个需要写日志的点:

  1. 捕获到异常时。建议用ERROR或者WARN。
  2. 业务流程出错。常见的合适场景包括外部参数不正确,数据处理问题导致返回码不在合理范围内等等。建议用ERROR或者WARN。
  3. 系统核心角色,组件关键动作,建议记录INFO级别日志,如果日志频度高或者打印量特别大,可以提炼关键点INFO记录,其余酌情考虑DEBUG级别。
  4. 系统初始化。核心模块或者组件初始化过程中往往依赖一些关键配置,根据参数不同会提供不一样的服务。务必在这里记录INFO日志,打印出参数以及启动完成态服务表述。

日志内容

日志应当提供如下内容:

  • 时间,包含时区信息和毫秒,这个工作往往日志框架足以支持。核心属性之一。
  • 日志级别,例如 debug、info 以及warn、error
  • 会话标识,能知道是哪个客户端或者是哪个用户触发,登陆账号,session信息等
  • 功能标识,功能标识的意义在于方便日志搜索,跟踪指定功能的完整轨迹,是INFO,DEBUG日志的常见技巧。跟logger分类同一道理,更细分功能标识则是方法标识,更多使用在DEBUG做在线调试使用。
  • 精炼的内容,内容永远是日志的核心,结合上述使用场景,简单来说包括场景信息(谁,什么功能等),状态信息(开始,中断,结束)以及重要参数.
  • 其他信息,其他可能的有用信息包括:版本号,线程号等等。

注意事项

  • 务必推敲日志的记录级别。
  • 注意日志的可读性,不妨在写完代码review这条日志是否通顺,能否提供真正有意义的信息。
  • 日志输出是多线程公用的,如果有另外一个线程正在输出日志,上面的记录就会被打断,最终显示输出和预想的就会不一致。
  • 线上代码禁止出现各类print等
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容

  • 前言# 日志用来记录用户操作、系统运行状态等,是一个系统的重要组成部分。然而由于日志并非系统核心功能,通常情况下并...
    风之舞者II阅读 1,462评论 0 10
  • 程序员的日常离不开日志,日志就好比私人秘书,负责运行周期一切trace工作。优秀的日志实践能极大帮助地程序员快速定...
    Java架构阅读 820评论 0 3
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 4,975评论 0 6
  • From:Python之日志处理(logging模块) - 云游道士 - 博客园 https://www.cnbl...
    vigny的先生阅读 2,679评论 3 5
  • 在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析...
    时待吾阅读 5,009评论 1 13