使用SeasLog打造高性能日志系统
2016-05-22 12:14
656 查看
什么是SeasLog
SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便、规范、高效地写日志,以及快速地读取和查询日志。为什么使用SeasLog
高性能SeasLog使用C语言编写,并带有缓冲池的功能。每次写入的日志,是先写入到内存当中,当达到一定的数量时,才写入到文件当中。
配置简单
SeasLog的配置十分简单,甚至不需要配置就可以直接使用。
功能完善,使用简单
支持日志级别
支持日志分模块存放
支持日志统计,分析
在Ubuntu下安装配置SeasLog
先使用以下命令下载最新版本的SeasLog,当前官方的版本为1.5.6,具体的版本和下载地址可以查看以下网址http://pecl.php.net/package/SeasLog php官方
https://github.com/Neeke/SeasLog 作者的github
http://www.imooc.com/view/591 SeasLog视频教程
// 下载最新版本的SeasLog wget pecl.php.net/get/SeasLog-1.5.6.tgz
// 解压下载得到的压缩包SeasLog-1.5.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中的常量
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写入日志之前,我们需要先设置日志的存放路径,如果没有设置路径的话,SeasLog会默认将这个日志写入到php.ini配置中默认指定的路径下SeasLog::setBasePath('/log/base_test');
可以使用以下方法,获取当前的存放路径。
SeasLog::getBasePath();
设置日志的模块
和设置路径的使用方法一样,设置模块调用如下命令SeasLog::setLogger('testModule/app1');
获取模块
SeasLog::getLastLogger()
快速写入日志
上面已经设置过了basePath与logger,于是log记录的目录已经产生了log记录目录 = basePath / logger / {fileName}.log log文件名,以 年月日 分文件,如今天是2014年02月18日期,那么 {fileName} = 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) { ["debug"]=> int(3) ["info"]=> int(3) ["notice"]=> int(3) ["warning"]=> int(3) ["error"]=> int(6) ["critical"]=> int(3) ["alert"]=> int(3) ["emergency"]=> int(3) } */
返回指定级别的日志信息数量
$count = SeasLog::analyzerCount(SEASLOG_WARNING); var_dump($count) ae99 ; // int(7)
返回当天的指定级别的日志信息数量
$count = SeasLog::analyzerCount(SEASLOG_ERROR,date('Ymd',time())); var_dump($count); // int(1)
返回日志列表
返回指定级别的日志列表SeasLog::analyzerDetail(SEASLOG_ERROR); /* array(6) { [0] => string(66) "error | 8568 | 1393172042.717 | 2014:02:24 00:14:02 | test error 3 " [1] => string(66) "error | 8594 | 1393172044.104 | 2014:02:24 00:14:04 | test error 3 " [2] => string(66) "error | 8620 | 1393172044.862 | 2014:02:24 00:14:04 | test error 3 " [3] => string(66) "error | 8646 | 1393172045.989 | 2014:02:24 00:14:05 | test error 3 " [4] => string(66) "error | 8672 | 1393172047.882 | 2014:02:24 00:14:07 | test error 3 " [5] => string(66) "error | 8698 | 1393172048.736 | 2014:02:24 00:14:08 | test error 3 " } */
返回指定级别当天的日志列表
SeasLog::analyzerDetail(SEASLOG_ERROR,date('Ymd',time()));
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- rem : web app适配的秘密武器
- php7 读取php.ini[4]
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- 简单好用的PHP分页类
- ASP.NET、ASP、PHP、JSP之间有什么区别?