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

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

内容简介:注: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 之企业级日志行为规范发布》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

计算统计

计算统计

Geof H.Givens、Jennifer A.Hoeting / 王兆军、刘民千、邹长亮、杨建峰 / 人民邮电出版社 / 2009-09-01 / 59.00元

随着计算机的快速发展, 数理统计中许多涉及大计算量的有效方法也得到了广泛应用与迅猛发展, 可以说, 计算统计已是统计中一个很重要的研究方向. 本书既包含一些经典的统计计算方法, 如求解非线性方程组的牛顿方法、传统的随机模拟方法等, 又全面地介绍了近些年来发展起来的某些新方法, 如模拟退火算法、基因算法、EM算法、MCMC方法、Bootstrap方法等, 并通过某些实例, 对这些方法的应用进行......一起来看看 《计算统计》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具