SeasLog 之企业级日志行为规范发布

栏目: IT资讯 · 发布时间: 7年前

内容简介:注:2017年云智慧研发团队发布此《企业级日志行为规范》。这份日志规范并不涉及任何商业机密,故分享给社区,愿整个社区在日志生产和使用过程中更加规范和高效。 该规范共包括:前言、工具组件选用、目录名称、级...

注:2017年云智慧研发团队发布此《企业级日志行为规范》。这份日志规范并不涉及任何商业机密,故分享给社区,愿整个社区在日志生产和使用过程中更加规范和高效。

该规范共包括:前言、 工具 组件选用、目录名称、级别定义和配置、日志文件和输出、日志内容和格式,六个方面。以下为规范正文。

日志规范

前言

良好的日志书写使用将为开发和运维提供便利;良好的日志级别定义和配置,将在为快速定位问题的前提上,可以有效地提升性能。

根据约束力强弱及故障敏感性,规约依次分为[强制]、[推荐]、[参考]三大类。

对于规约条目的延伸信息中,"说明"对内容做了引申和解释;

"[正例]"提倡什么样的编码和实现方式;

"[反例]"说明需要提防的雷区,以及真实的错误案例。

工具组件选用

PHP

[推荐]使用SeasLog作为日志记录工具。

较Log4php,MonoLog而言,具有更好的性能和使用便捷性。

[参考] http://pecl.php.net/package/seaslog

Java

[推荐]使用log4j2作为日志记录工具。

较log4j,logback而言,log4j2的异步模式具有更好的性能。

[参考]http://logging.apache.org/log4j/2.x/manual/async.html#AllAsync

目录名称

根目录

[强制]日志根目录通过日志组件配置决定。

[强制]不允许将日志根目录写死位置。

日志目录

[强制]通过配置或程序中定义Logger指定日志分级目录。

[推荐]每一个Logger代表一个具体的应用逻辑层,为每一个Logger,在根目录中分配一个日志分目录。

[正例]根目录 /data/logs/tsb/

用户逻辑分级目录 /data/logs/tsb/user

移动逻辑分级目录 /data/logs/tsb/mobile

级别定义

定义

相较于 PHPJava 各自规范不同,我们统一为8个级别,其中包括强制级别和推荐级别。

[强制]DEBUG

debug信息、细粒度信息事件

如:调试信息

[强制]INFO

重要事件、强调应用程序的运行过程

如:用户登录的 SQL 信息、创建任务时的执行过程

[推荐]NOTICE

一般重要性事件、执行过程中较INFO级别更为重要的信息

如:调用外部API时的过程日志

[强制]WARNING / WARN

出现了非错误性的异常信息、潜在异常信息、需要关注并且需要修复

如:调用了已经被充用的API、用户请求参数中包含了非法字符但经过处理无害

[强制]ERROR

运行时出现的错误、不必要立即进行修复、不影响整个逻辑的运行、需要记录并做检测

如:调用预期存在的Cache出现未命中进而查询DB、调用某首选API不通进而调用候选API

[强制]CRITICAL / FATAL

紧急情况、需要立刻进行修复、程序组件不可用

如:程序组件异常退出、用户注册逻辑不能发送邮件

[推荐]ALERT

必级立即采取行动的紧急事件、需要立即通知相关人员紧急修复

如:整个网站垮掉、DB/Cache无法连接

[推荐]EMERGENCY

系统不可用

如:磁盘不可写

配置

[强制]通过配置决定输出某级别以上的日志信息。

[正例]在php.ini或SeasLog.ini中设置seaslog.level值,控制只输出日志级别INFO以上级别的信息。

[参考] SeasLog 配置

[正例]在 log4j.configurationFile 指定的配置文件中,为log4j2设置Logger Level,控制只输出日志级别INFO以上级别的信息。

[参考] Log4j2 配置

日志文件

文件命名

[强制]以 " {日期} {文件名分隔符} [{级别}] . log " 格式命名

[强制]{日期}格式可选范围:yyyymmdd (年月日) , yyyymmddhh (年月日时)

[推荐]{文件名分隔符}使用:点

[参考]{文件名分隔符} 可选范围:中划线,下划线,点

[正例]/data/logs/tsb/user/20170913.INFO.log

[正例]/data/logs/tsb/user/2017091314.ERROR.log

日志输出

[强制]不同级别日志通过配置分开输出。

[推荐]对于不能通过配置作出分级别输出的工具组件,应将ERROR以上级别单独输出。

内容格式

日志内容

[强制]简明扼要,无冗余

[强制]关键业务必须可通过日志回溯请求,并定义明确的日志级别

[强制]异常与错误必须记录日志,并定义明确的日志级别

[强制]不允许将已捕获的异常栈随意丢进日志,应给出明确的级别和语义描述

[强制]每一条日志内容必须包括且不限于以下内容:时间、进程ID、日志级别、日志内容。

日志格式

[强制]每一条日志记录为一行

[推荐]对于日志内容中有换行操作的,应计划处理为一行,否则日志收集之后将出现不可查看或分析问题

[强制]单条日志内容格式为

{时间点} {日志分隔符} {级别} {日志分隔符} {进程ID} {日志分隔符} [{线程名}] {日志分隔符} {日志内容}

[强制]{时间点} 格式为:yyyy-MM-dd hh:mm:ss[.SSS] (年-月-日 小时:分钟:秒[.毫秒])

[推荐]{日志分隔符} 使用:竖线

[参考]{日志分隔符} 可选范围:竖线,空格

[正例]2017-09-13 19:35:54 | ERROR | 26922 | api error /api/getuserinfo 404

[正例]2017-09-13 19:35:54 ERROR 26922 api error /api/getuserinfo 404

注:

码云地址:https://gitee.com/Neeke/SeasLog/tree/master/Specification

GitHub地址: https://github.com/SeasX/SeasLog/blob/master/Specification/README_zh.md  


【声明】文章转载自:开源中国社区 [http://www.oschina.net]


以上所述就是小编给大家介绍的《SeasLog 之企业级日志行为规范发布》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Little Prover

The Little Prover

Daniel P. Friedman、Carl Eastlund / The MIT Press / 2015-7-10 / USD 38.00

[FROM www.amazon.com]: The Little Prover introduces inductive proofs as a way to determine facts about computer programs. It is written in an approachable, engaging style of question-and-answer, wi......一起来看看 《The Little Prover》 这本书的介绍吧!

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具