SeasLog 是一个C语言编写的php扩展, 提供一组规范标准的功能函数,在PHP项目中方便、规范、高效地写日志,以及快速地读取和查询日志。
使用步骤
1.安装SeasLog
下载地址 http://pecl.php.net/package/SeasLog
由于博主这里 使用的windows ,故采用下载dll文件,
补充说明,不知道自己是TS还是NTS的可以写一个phpinfo.php 看下自己的配置,搜索thread safe 即可。
2.安装配置说明
【win下配置说明】
将php_seaslog.dll放到php扩展目录下,然后打开php.ini文件,追加扩展引入
extension=php_seaslog.dll ;加载动态库
seaslog.default_basepath=d:/wamp64/logs ;默认log根目录
seaslog.default_logger=default ;默认logger目录
seaslog.disting_type=1 ;是否以type分文件 1 是 0否(默认)
seaslog.disting_by_hour=1 ;是否每小时划分一个文件 1 是 0否(默认)
seaslog.use_ubffer=1 ;是否启用buffer 1 是 0 否(默认)
seaslog.buffer_size=100 ;buffer中缓存数量 默认0 (不使用buffer_size)
seaslog.level=0 ;记录日志级别 默认0 (所有日志)
seaslog.trace_error=1 ;自动记录错误 默认1 (开启)
seaslog.trace_exception=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时,所有日志均不记录。
配置好友,重启apache ,运行phpinfo 查看
【linux下】
$ /path/to/phpize
$ ./configure --with-php-config=/path/to/php-config
$ make && make install
或者使用pecl install
$ pecl install seaslog
【ps:补充安装方法】
wget http://pecl.php.net/get/SeasLog-1.7.6.tgz
tar xvf SeasLog-1.7.6.tgz
cd SeasLog-1.7.6
查找php安装位置: find / -name phpize查出后直接 /usr/bin/phpize ,然后./configure
make && make install
修改php.ini
cd /etc/
vim php.ini 加上 extension=seaslog.so
3. 使用说明
\SeasLog::setBasePath('d:/wamp64/logs'); \SeasLog::log(SEASLOG_ERROR,'this is a error test by ::log'); \SeasLog::debug('this is a {userName} debug',array('{userName}' => 'neeke')); \SeasLog::info('this is a info log'); \SeasLog::notice('this is a notice log'); \SeasLog::warning('your {website} was down,please {action} it ASAP!',array('{website}' => 'github.com','{action}' => 'rboot')); \SeasLog::error('a error log'); \SeasLog::critical('some thing was critical'); \SeasLog::alert('yes this is a {messageName}',array('{messageName}' => 'alertMSG')); \SeasLog::emergency('Just now, the house next door was completely burnt out! {note}',array('{note}' => 'it`s a joke')); $log_message = time()."233l32lj23jl23"; \SeasLog::info($log_message); $data = \SeasLog::analyzerCount(); print_r($data); echo "<br/>"; exit;
SeaseLog 日志级别说明
var_dump(SEASLOG_DEBUG);
var_dump(SEASLOG_INFO);
var_dump(SEASLOG_NOTICE);
输出结果:
string(‘debug’) debug级别
string(‘info’) info级别
string(‘notice’) notice 级别
SEASLOG_DEBUG “debug”
SEASLOG_INFO “info”
SEASLOG_NOTICE “notice”
SEASLOG_WARNING “warning”
SEASLOG_ERROR “error”
SEASLOG_CRITICAL “critical”
SEASLOG_ALERT “alert”
SEASLOG_EMERGENCY “emergency”
获取某类型LOG列表
shell命令: grep -w
$detailErrorArray_inAll = SeasLog::analyzerDetail(SEASLOG_ERROR);
$detailErrorArray_today = SeasLog::analyzerDetail(SEASLOG_ERROR,date(‘Ymd’,time()));
echo “<pre>”;
print_r($detailErrorArray_inAll);
echo “</pre>”;
echo “<pre>”;
print_r($detailErrorArray_today);
echo “</pre>”;
SeasLog::analyzerDetail(SEASLOG_ERROR,date('Ymd',time())); 只取得当前模块下,当前一天内,level为SEASLOG_ERROR 的信息列表:
同理,取当月 $detailErrorArray_mouth = SeasLog::analyzerDetail(SEASLOG_ERROR,date('Ym',time()));
更多资料介绍请参考
https://github.com/Neeke/SeasLog
转载请注明:苏demo的别样人生 » php SeasLog 日志扩展