log日志都是架构中不可缺少的一个重要组成部分

运用SeasLog创设PHP项目中的高品质日志组件(1)

什么是SeasLog

SeasLog是三个C语言编写的PHP扩展,提供一组正式典型的效应函数,在PHP项目中有益、标准、高效地写日记,以及高速地读取和询问日志。

为啥使用SeasLog

不论是在如何应用中,log日志皆以架设中不可缺失的一个最重要组成都部队分,它常常是系统或软件、应用的运作记录。通过log的解析,能够一本万利用户领会系统或软件、应用的运维情状;要是你的运用log丰富丰盛,也得以深入分析过去顾客的操作行为、类型喜好、地域遍布或其余越来越多消息;若是叁个行使的log同不常间也分了多个品级,那么能够很自由地分析获得该使用的健康处境,及时开采难点并急迅稳固、化解难点,补救损失。

大家清楚,php内置了繁多log函数,如error_log、syslog、file_put_content,那一个函数功效庞大且性能极好,但鉴于各类短处(error_log、file_put_content无不当品级、无固定格式像是信马由缰随处乱画;syslog不区分模块、并且与系统日志混合,读syslog记录会令人抓狂的。),灵活度降低了比很多,很不可能满意使用要求。基本上全体的开荒者,都会自行设计封装log库,当然也可以有十分的多开荒者选用已部分开源日志库。

也可以有众多开源log类库弥补了上述缺欠,如log4php、plog、Analog等(当然也可以有这个利用在等级次序中温馨费用的log类)。在那之中以log4php最为盛名,它的希图美貌、格式完美、文书档案完善、功能庞大。可是透过测量检验,log4php的属性非常糟糕。

图片 1

那是log4php与SeasLog的性格比较图:

布署思路

那么有没有一种log类库同一时候满意以下须求呢:

●分模块、分级别

●配置简单(最佳是勿须配备)

●日志格式清晰易读

●应用轻松、品质很棒

笔者们通晓,PS大切诺基-3规范是二个国际化的日记标准,它供给了“模块、等第、清晰、易用”等日志工作应具有的表征。由此,只要大家根据了PSCR-V-3标准,则大家可以做到“分模块、分等第”以及“日志格式清晰易读”的须要。

“配置轻松”这几个供给也很好成功。假设严厉依据既定准则,其实只须要安装暗许目录就能够了。

OK,未来我们只剩下“品质”那二个供给。

既然如此是日记,免不了会写文件,只怕经过pipe通过网络传递到某些存款和储蓄中央(大家暂不考虑存款和储蓄主旨的布置性)。可以测算,借使一个央浼中需求写出1000处log,那么势必会有一千次IO,那对品质将是八个十分的大的拖延点。一般对于拍卖这种每每等同的恳求场景,我们要解决的骨子里也很简短,使用cache或buffer,把数十次伸手作归并,进而裁减对磁盘或互联网的IO,那是贰当中坚的沉思。

SeasLog也是那样做的。设定一个buffer_size(私下认可100条log),使用PHP央求内部存款和储蓄器,每写一回log,塞入内部存款和储蓄器,同期buffer_size加;当buffer_size等于设置值时,则举办贰遍IO,相同的时间免去buffer;
当然,假使乞求甘休了、或实行了die、exit或任何特别退出时,不管buffer_size有未有攒够设置值,立刻实行一次IO,同期排除buffer。

到最近结束,SeasLog的专门的职业版本为1.1.6,选取Apache
2.0开源合同,同期能够在php.net官方,和Github库上赢得它的共同体代码。

Php.net

Github

时下提供了怎么

●在PHP项目中便捷、标准地记录log

●可布署的暗许log目录与模块

●钦点log目录与收获当前安排

●伊始的分析预先警告框架

●高效的日记缓冲、便捷的缓冲debug

●遵守 PS纳瓦拉-3 日志接口标准

怎么设置

获得源码后,可活动编写翻译。

$ /path/to/phpize

$ ./configure –with-php-config=/path/to/php-config 

$ make && make install

当然,使用PECL管理工科具会更利于: 

$ pecl install seaslog

seaslog.ini的配置

; configuration for php SeasLog module extension = seaslog.so seaslog.default_basepath = /log/seaslog-test    ;默认log根目录 seaslog.default_logger = default                ;默认logger目录 seaslog.disting_type = 1                            ;是否以type分文件 1是 0否(默认) seaslog.disting_by_hour = 1                      ;是否每小时划分一个文件 1是 0否(默认) seaslog.use_buffer = 1                              ;是否启用buffer 1是 0否(默认) seaslog.buffer_size = 100                         ;buffer中缓冲数量 默认0(不使用buffer_size) seaslog.level = 0                                       ;记录日志级别 默认0(所有日志) 

seaslog.disting_type = 1
开启以type分文件,即log文件分别info\warn\erro

seaslog.disting_by_hour = 1 拉开每小时划分二个文本

seaslog.use_buffer = 1
开启buffer。暗中同意关闭。当展开此项时,日志预存于内部存款和储蓄器,当呼吁截至时(或极其退出时)一回写入文件。

seaslog.buffer_size = 100 设置缓冲数量为100.
私下认可为0,即无缓冲数量限制.当buffer_size大于0时,缓冲量到达该值则写贰遍文件. 

seaslog.level = 3
记录的日志等第.默以为0,即怀有日志均记录。当level为1时,关心debug以上等级(包涵debug),就那样类推。level大于8时,全部日志均不记录。


图片 2


)
什么是SeasLog
SeasLog是一个C语言编写的PHP扩充,提供一组正式规范的作用函数,在PHP项目中方便…

相关文章