使用SeasLog打造高效能日誌系統

2021-07-11 23:21:38 字數 3520 閱讀 2954

seaslog是乙個c語言編寫的php擴充套件,提供一組規範標準的功能函式,在php專案中方便、規範、高效地寫日誌,以及快速地讀取和查詢日誌。

高效能

seaslog使用c語言編寫,並帶有緩衝池的功能。每次寫入的日誌,是先寫入到記憶體當中,當達到一定的數量時,才寫入到檔案當中。

配置簡單

seaslog的配置十分簡單,甚至不需要配置就可以直接使用。

功能完善,使用簡單

支援日誌級別

支援日誌分模組存放

支援日誌統計,分析

wget pecl.php

.net/get/seaslog-1.5

.6.tgz

.6.tgz

tar -zxvf seaslog-1.5

.6.tgz

使用php自帶的安裝方法,ubuntu下需要先安裝 php5-dev 的包

apt-get install php5-dev

phpize

使用了phpize命令之後,當前解壓的路徑下回多出乙個configure的檔案.

後面修改為自己的php-config路徑

./configure --

with

-php

-config

=/usr/bin/php-config

編譯並安裝

make && make install
在php.ini中配置seaslog

;seaslog

extension = "seaslog.so"

easlog.default_basepath = /var/log/

seaslog.default_logger = default

seaslog.disting_type = 1

seaslog.disting_by_hour = 1

seaslog.use_buffer = 1

seaslog.buffer_size = 100

seaslog.level = 0

seaslog.trace_error = 1

seaslog.trace_exception = 0

seaslog.default_datetime_format = "%y:%m:%d %h:%m:%s"

重啟apache伺服器

service apache2 restart
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"

設定存放路徑

在開始使用seaslog寫入日誌之前,我們需要先設定日誌的存放路徑,如果沒有設定路徑的話,seaslog會預設將這個日誌寫入到php.ini配置中預設指定的路徑下

seaslog::setbasepath('/log/base_test');
可以使用以下方法,獲取當前的存放路徑。

seaslog

::getbasepath();

設定日誌的模組

和設定路徑的使用方法一樣,設定模組呼叫如下命令

獲取模組

seaslog

::getlastlogger()

快速寫入日誌

上面已經設定過了basepath與logger,於是log記錄的目錄已經產生了

log記錄目錄 = basepath / logger / .log log檔名,以 年月日 分檔案,如今天是2023年02月18日期,那麼 = 20140218;

呼叫以下方法可以快速寫入乙個日誌,level引數為日誌的等級,message為日誌的資訊

日誌的等級我們可以傳入上面介紹過的常量,也可以傳入等級的名稱,比如說info,error等,建議使用常量

seaslog::log(level, message);
寫入指定等級的日誌資訊,可以使用以下的方法

seaslog

::debug(message);

seaslog

::info(message);

seaslog

::notice(message);

seaslog

::warning(message);

seaslog

::error(message);

seaslog

::critical(message);

seaslog

::alert(message);

seaslog

::emergency(message);

快速統計日誌

使用下面這個方法,可以將各級別的所有日誌資訊彙總後,返回乙個陣列

$count = seaslog::analyzercount();

var_dump($count);

/*array(8)

*/

返回指定級別的日誌資訊數量

$count

= seaslog::analyzercount(seaslog_warning);

var_dump($count);

// int(7)

返回當天的指定級別的日誌資訊數量

$count

= seaslog::analyzercount(seaslog_error,date('ymd',time()));

var_dump($count);

// int(1)

返回日誌列表

返回指定級別的日誌列表

seaslog::analyzerdetail(seaslog_error);

/*array(6)

*/

返回指定級別當天的日誌列表

seaslog::analyzerdetail(seaslog_error,date('ymd',time()));

打造高效能站點

robbin的部落格 blog 77338 為什麼orm效能比ibatis好?django快取 cache backend memcached memcached的乙個極好的特性是它在多個伺服器分享快取的能力,這意味著你可以在多台機器上執行memcached程序,程式將會把這組機器當作乙個單獨的快取...

如何打造高效能大資料分析平台

from 原文 building high performance big data analytics systems 大資料分析系統作為乙個關鍵性的系統在各個公司迅速崛起。但是這種海量規模的資料帶來了前所未有的效能挑戰。同時,如果大資料分析系統無法在第一時間為運營決策提供關鍵資料,那麼這樣的大資...

榮耀發力拍照手機 打造高效能潮流新品

2020年是5g手機爆發的程式設計客棧一年,在這個大環境下,各類5g手機層出不窮。而智慧型手機發展到今天,拍照方面已經越發成熟,目前市面上www.cppcns.com支援5g的拍照手機也不在少數。今年4月,榮耀發布榮耀30系列拍照手機,新潮的設計 強大的配置令人眼前一亮,更獲得眾多好評。此次榮耀30...