2023-05-12 开启多语言插件支持……

php SeasLog 日志扩展

php 苏 demo 2698℃

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 日志扩展

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)