真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

使用SeasLog打造PHP項目中的高性能日志組件(一)

 云智慧(北京)科技有限公司 高馳濤

 

網(wǎng)站建設(shè)、網(wǎng)站設(shè)計,成都做網(wǎng)站公司-創(chuàng)新互聯(lián)建站已向上千多家企業(yè)提供了,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)絡(luò)營銷等服務(wù)!設(shè)計與技術(shù)結(jié)合,多年網(wǎng)站推廣經(jīng)驗,合理的價格為您打造企業(yè)品質(zhì)網(wǎng)站。

什么是SeasLog

SeasLog是一個C語言編寫的PHP擴展,提供一組規(guī)范標(biāo)準(zhǔn)的功能函數(shù),在PHP項目中方便、規(guī)范、高效地寫日志,以及快速地讀取和查詢?nèi)罩尽?/p>為什么使用SeasLog

無論在什么應(yīng)用中,log日志都是架構(gòu)中不可缺少的一個重要組成部分,它通常是系統(tǒng)或軟件、應(yīng)用的運行記錄。通過log的分析,可以方便用戶了解系統(tǒng)或軟件、應(yīng)用的運行情況;如果你的應(yīng)用log足夠豐富,也可以分析以往用戶的操作行為、類型喜好、地域分布或其他更多信息;如果一個應(yīng)用的log同時也分了多個級別,那么可以很輕易地分析得到該應(yīng)用的健康狀況,及時發(fā)現(xiàn)問題并快速定位、解決問題,補救損失。

我們知道,php內(nèi)置了很多l(xiāng)og函數(shù),如error_log、syslog、file_put_content,這些函數(shù)功能強大且性能極好,但由于各種缺陷(error_log、file_put_content無錯誤級別、無固定格式像是信馬由韁隨處亂畫;syslog不區(qū)分模塊、而且與系統(tǒng)日志混合,讀syslog記錄會讓人抓狂的。),靈活度降低了很多,很不能滿足應(yīng)用需求?;旧纤械拈_發(fā)者,都會自行設(shè)計封裝log庫,當(dāng)然也會有很多開發(fā)者選擇已有的開源日志庫。

也有很多開源log類庫彌補了上述缺陷,如log4php、plog、Analog等(當(dāng)然也有很多應(yīng)用在項目中自己開發(fā)的log類)。其中以log4php最為著名,它的設(shè)計精良、格式完美、文檔完善、功能強大。但是經(jīng)過測試,log4php的性能非常差。

這是log4php與SeasLog的性能對比圖:

使用SeasLog打造PHP項目中的高性能日志組件(一)

設(shè)計思路

那么有沒有一種log類庫同時滿足以下需求呢:

·分模塊、分級別

·配置簡單(最好是勿須配置)

·日志格式清晰易讀

·應(yīng)用簡單、性能很棒

我們知道,PSR-3標(biāo)準(zhǔn)是一個國際化的日志標(biāo)準(zhǔn),它要求了“模塊、級別、清晰、易用”等日志工作應(yīng)具備的特點。因此,只要我們遵循了PSR-3標(biāo)準(zhǔn),則我們可以完成“分模塊、分級別”以及“日志格式清晰易讀”的要求。

“配置簡單”這個需求也很好完成。如果嚴(yán)格按照既定規(guī)則,其實只需要設(shè)置默認(rèn)目錄就可以了。

 

OK,現(xiàn)在我們只剩下“性能”這一個要求。

既然是日志,免不了會寫文件,或者通過pipe通過網(wǎng)絡(luò)傳送到某個存儲中心(我們暫不考慮存儲中心的設(shè)計)。可以想見,假設(shè)一個請求中需要寫出1000處log,那么勢必會有1000次IO,這對性能將是一個很大的拖延點。一般對于處理這種多次相同的請求場景,我們要解決的其實也很簡單,使用cache或buffer,把多次請求作歸并,從而降低對磁盤或網(wǎng)絡(luò)的IO,這是一個基本的思想。

SeasLog也是這么做的。設(shè)定一個buffer_size(默認(rèn)100條log),使用PHP請求內(nèi)存,每寫一次log,塞入內(nèi)存,同時buffer_size加;當(dāng)buffer_size等于設(shè)置值時,則進行一次IO,同時清除buffer; 當(dāng)然,如果請求結(jié)束了、或執(zhí)行了die、exit或其他異常退出時,不管buffer_size有沒有攢夠設(shè)置值,立刻進行一次IO,同時清除buffer。

 

到目前為止,SeasLog的正式版本為1.1.6,采用Apache 2.0開源協(xié)議,同時可以在php.net官方,和Github庫上獲得它的完整代碼。

Php.net     http://pecl.php.net/package/seaslog

Github      https://github.com/Neeke/SeasLog

目前提供了什么

·在PHP項目中便捷、規(guī)范地記錄log

·可配置的默認(rèn)log目錄與模塊

·指定log目錄與獲取當(dāng)前配置

·初步的分析預(yù)警框架

·高效的日志緩沖、便捷的緩沖debug

·遵循 PSR-3 日志接口規(guī)范

怎么安裝

獲得源碼后,可自行編譯。

$ /path/to/phpize

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

$ make && make install

 

當(dāng)然,使用PECL管理工具會更方便:

$ pecl install seaslog

 

seaslog.ini的配置

; configuration for php SeasLog module

extension = seaslog.so

seaslog.default_basepath = /log/seaslog-test    ;默認(rèn)log根目錄

seaslog.default_logger = default                ;默認(rèn)logger目錄

seaslog.disting_type = 1                            ;是否以type分文件 1是 0否(默認(rèn))

seaslog.disting_by_hour = 1                      ;是否每小時劃分一個文件 1是 0否(默認(rèn))

seaslog.use_buffer = 1                              ;是否啟用buffer 1是 0否(默認(rèn))

seaslog.buffer_size = 100                         ;buffer中緩沖數(shù)量 默認(rèn)0(不使用buffer_size)

seaslog.level = 0                                       ;記錄日志級別 默認(rèn)0(所有日志)

 

seaslog.disting_type = 1 開啟以type分文件,即log文件區(qū)分info\warn\erro

seaslog.disting_by_hour = 1 開啟每小時劃分一個文件

seaslog.use_buffer = 1 開啟buffer。默認(rèn)關(guān)閉。當(dāng)開啟此項時,日志預(yù)存于內(nèi)存,當(dāng)請求結(jié)束時(或異常退出時)一次寫入文件。

seaslog.buffer_size = 100 設(shè)置緩沖數(shù)量為100. 默認(rèn)為0,即無緩沖數(shù)量限制.當(dāng)buffer_size大于0時,緩沖量達到該值則寫一次文件.

seaslog.level = 3 記錄的日志級別.默認(rèn)為0,即所有日志均記錄。當(dāng)level為1時,關(guān)注debug以上級別(包括debug),以此類推。level大于8時,所有日志均不記錄。

 

默認(rèn)常量有哪些

遵循PSR-3標(biāo)準(zhǔn),SeasLog 共將日志分成8個級別

·SEASLOG_DEBUG "debug"

·SEASLOG_INFO "info"

·SEASLOG_NOTICE "notice"

·SEASLOG_WARNING "warning"

·SEASLOG_ERROR "error"

·SEASLOG_CRITICAL "critical"

·SEASLOG_ALERT "alert"

·SEASLOG_EMERGENCY "emergency"

關(guān)于作者:

高馳濤(Neeke),云智慧高級架構(gòu)師,PHP開發(fā)組成員,同時也是PECL/SeasLog等多個開源軟件作者與貢獻者。8年研發(fā)管理經(jīng)驗,早期從事大規(guī)模企業(yè)信息化研發(fā)架構(gòu),09年涉足互聯(lián)網(wǎng)數(shù)字營銷領(lǐng)域并深入研究架構(gòu)與性能優(yōu)化。對高并發(fā)、高性能、高可用系統(tǒng)設(shè)計實現(xiàn)有豐富經(jīng)驗。崇尚規(guī)范、敏捷、高效、GettingReal。目前在云智慧致力于APM產(chǎn)品的架構(gòu)與研發(fā)。主要負責(zé)PHP、Python、Go等語言的底層擴展與SmartAgent的架構(gòu)研發(fā)。


文章標(biāo)題:使用SeasLog打造PHP項目中的高性能日志組件(一)
文章地址:http://weahome.cn/article/jjdcsh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部