log 日志, 通常是系统或软件应用的运行记录通过 log 的分析, 可以方便用户了解系统或软件应用的运行情况; 如果你的应用 log 足够丰富, 也可以分析以往用户的操作行为类型喜好地域分布或其他更多信息; 如果一个应用的 log 同时也分了多个级别, 那么可以很轻易地分析得到该应用的健康状况, 及时发现问题并快速定位解决问题, 补救损失
php 内置 error_logsyslog 函数功能强大且性能极好, 但由于各种缺陷(error_log 无错误级别无固定格式, syslog 不分模块与系统日志混合), 灵活度降低了很多, 不能满足应用需求
有没有一种 log 类库满足以下需求呢:
分模块分级别
配置简单(最好是勿须配置)
日志格式清晰易读
应用简单性能很棒
SeasLog 正是应此需求而生
SeasLog 目前提供了什么:
在 PHP 项目中便捷规范地记录 log
可配置的默认 log 目录与模块
指定 log 目录与获取当前配置
初步的分析预警框架
高效的日志缓冲便捷的缓冲 debug
SeasLog 的目标是:
便捷规范的 log 记录
高效的海量 log 分析
可配置多途径的 log 预警
1. 应用 demo
- <?php
- /**
- * @author ciogao@gmail.com
- * Date: 14-1-27 下午 4:41
- */
- echo '';
- var_dump(SEASLOG_TYPE_INFO,SEASLOG_TYPE_INFO_STR);
- var_dump(SEASLOG_TYPE_WARN,SEASLOG_TYPE_WARN_STR);
- var_dump(SEASLOG_TYPE_ERRO,SEASLOG_TYPE_ERRO_STR);
- var_dump(seaslog_get_basepath());
- var_dump(seaslog_get_lastlogger());
- var_dump(seaslog_get_basepath());
- var_dump(seaslog('test info'));
- var_dump(seaslog('test warning', SEASLOG_TYPE_WARN));
- var_dump(seaslog('test error', SEASLOG_TYPE_ERRO));
- var_dump(seaslog_set_basepath('/log/base_test'));
- var_dump(seaslog_set_logger('testModule/app1'));
- var_dump(seaslog('test info 2'));
- var_dump(seaslog('test warning 2', SEASLOG_TYPE_WARN));
- var_dump(seaslog('test error 2', SEASLOG_TYPE_ERRO));
- var_dump(seaslog_get_basepath());
- var_dump(seaslog_get_lastlogger());
- var_dump(seaslog_get_basepath());
- var_dump(seaslog('test error 3', SEASLOG_TYPE_ERRO, 'test/bb'));
- var_dump(seaslog_analyzer_count()); // == seaslog_analyzer_count(ALL_TYPE);
- var_dump(seaslog_analyzer_count(SEASLOG_TYPE_ERRO)); // == seaslog_analyzer_count(SEASLOG_TYPE_ERRO,'*')
- var_dump(seaslog_analyzer_count(SEASLOG_TYPE_ERRO,'20140211.log'));
- var_dump(seaslog_analyzer_detail(SEASLOG_TYPE_ERRO)); // == seaslog_analyzer_detail(SEASLOG_TYPE_ERRO,'*')
- var_dump(seaslog_analyzer_detail(SEASLOG_TYPE_ERRO,'20140211.log'));
- echo "\n";
2.php.ini 中设置
- ; configuration for php SeasLog module
- extension = seaslog.so
seaslog.default_basepath = /log/seaslog-test ; 默认 log 根目录
seaslog.default_logger = default ; 默认 logger 目录
seaslog.disting_type = 1 ; 是否以 type 分文件 1 是 0 否(默认)
seaslog.disting_by_hour = 1 ; 是否每小时划分一个文件 1 是 0 否(默认)
seaslog.use_buffer = 1 ; 是否启用 buffer 1 是 0 否(默认)
3. SeasLog 提供了这样一组函数, 可以方便地获取与设置根目录模块目录快速写入与统计 log 相信从下述伪代码的注释
- <?php
- /**
- * @author ciogao@gmail.com
- * Date: 14-1-27 下午 4:47
- *$**
- * 设置 basePath
- * @param $basePath
- * @return bool
- */
- function seaslog_set_basepath($basePath)
- {
- return TRUE;
- }
- /**
- * 获取 basePath
- * @return string
- */
- function seaslog_get_basepath()
- {
- return 'the base_path';
- }
- /**
- * 设置模块目录
- * @param $module
- * @return bool
- */
- function seaslog_set_logger($module)
- {
- return TRUE;
- }
- /**
- * 获取最后一次设置的模块目录
- * @return string
- */
- function seaslog_get_lastlogger()
- {
- return 'the lastLogger';
- }
- /**
- * 快速写入 log
- * @param $msg
- * @param string $module
- * @param int $type
- * @return bool
- */
- function seaslog($msg, $type = SEASLOG_TYPE_INFO, $module = 'defaultPath')
- {
- return TRUE;
- }
- /**
- * 统计所有类型 (或单个类型) 行数
- * @param string $type
- * @param string $log_path
- * @return array | long
- */
- function seaslog_analyzer_count($type = 'allType',$log_path = '*')
- {
- return array();
- }
- /**
- * 以数组形式, 快速取出某类型 log 的各行详情
- * @param $type
- * @param string $log_path
- * @return array
- */
- function seaslog_analyzer_detail($type = SEASLOG_TYPE_ERRO,$log_path = '*')
- {
- return array();
- }
- /**
- * 获得当前日志 buffer 中的内容
- * @return array
- */
- function seaslog_get_buffer()
- {
- return array();
- }
来源: https://www.php1.cn/detail/php-e569c7345a.html