为什么需要日志功能
1.没有日志,只能等到用户反馈,系统不能用,才可以
3收集:比如500的错误,知道这个错误是什么引起的
查看全部
3-1 在Thinkphp中集成SeasLog(有2种方法)
1.直接在控制器中去调用SeasLog对应的方法。比如需要记录debug的信息直接写debug的方法。
SeasLog::info('test');
2.既然用了框架,那么就依托框架的特性去集成。Thinkphp中有一个Log.class.php(日志处理类)的文件。那么要集成SeasLog,首先要把配置文件Home/Conf/config.php里默认的日志驱动改一下。
'LOG_TYPE'=='SeasLog',
第2个配置项就是日志所存储的空间,在根目录新建一个log文件夹来存储日志。
'LOG_PATH'=>'C:/wamp/www/mooc/Think/log'
然后在ThinkPHP/Library/Think/Log的驱动文件夹Driver上新建一个SeasLog.class.php的类文件。
class SeasLog {
// 实例化并传入参数
public function __construct(){
\SeasLog::setBasePath(C('LOG_PATH'));
\SeasLog::setLogger('Home');
}
/**
* 日志写入接口
* @access public
* @param string $log 日志信息
* @param string $destination 写入目标
* @return void
*/
public function write($log,$lever='DEBUG') {
\SeasLog::debug($log);
}
}
查看全部
SeasLog是一个C语言编写的PHP扩展,提供一组规范标准的功能函数,在PHP项目中方便、规范、高效地写日志,以及快速地读取和查询日志
查看全部
3-1 在Thinkphp中集成SeasLog(有2种方法)
1.直接在控制器中去调用SeasLog对应的方法。比如需要记录debug的信息直接写debug的方法。
SeasLog::info('test');
2.既然用了框架,那么就依托框架的特性去集成。Thinkphp中有一个Log.class.php(日志处理类)的文件。那么要集成SeasLog,首先要把配置文件Home/Conf/config.php里默认的日志驱动改一下。
'LOG_TYPE'=='SeasLog',
第2个配置项就是日志所存储的空间,在根目录新建一个log文件夹来存储日志。
'LOG_PATH'=>'C:/wamp/www/mooc/Think/log'
然后在ThinkPHP/Library/Think/Log的驱动文件夹Driver上新建一个SeasLog.class.php的类文件。
class SeasLog {
// 实例化并传入参数
public function __construct(){
\SeasLog::setBasePath(C('LOG_PATH'));
\SeasLog::setLogger('Home');
}
/**
* 日志写入接口
* @access public
* @param string $log 日志信息
* @param string $destination 写入目标
* @return void
*/
public function write($log,$lever='DEBUG') {
\SeasLog::debug($log);
}
}
查看全部
那么因为ThinkPHP本身的日志系统对于日志的级别区分不是特别的好,所以可以扩展一下。希望达到按不同的日志级别去记录的效果。
在Log.class.php中新建一个l的方法
static function l($message,$level='INFO') {
if(!self::$storage){
$type = $type?:C('LOG_TYPE');
$class = 'Think\\Log\\Driver\\'. ucwords($type);
self::$storage = new $class();
}
self::$storage->l($message,$level);
}
在SeasLog.class.php中新建一个l的方法
public function l($message,$level='INFO') {
//调用SeasLog快捷存储日志的方法
\SeasLog::log($level,$message);
}
在IndexController中的index()方法里
#\Think\Log::l('it is test','INFO');//输出INFO的信息
\Think\Log::l('it is test','DEBUG');//输出DEBUG的信息
查看全部
SEASlog的常用方法
查看全部
/*//2-2 SeasLog常用方法
//1.这个类是静态方法,所以不需要实例化
SeasLog::setBasePath('C:/wamp/www/mooc/seaslog/log');//设置基础路径的方法
//echo SeasLog::getBasePath();//查看基础路径是什么
//2.不同的模块存到不同的路径下
SeasLog::setLogger('Web');
//SeasLog::setLogger('Api');
//3.写一条日志到文件当中
SeasLog::debug('It is debug info');//debug信息
SeasLog::info('It is info');//info信息
SeasLog::notice('It is notice');//notice信息
//4.在程序当中查看日志记录情况
//$data = SeasLog::analyzerCount();//日志统计
//print_r($data);
//5.查看日志详情
//$data = SeasLog::analyzerDetail('info');
//print_r($data);
//6.全局常量的使用,SEASLOG_DEBUG='debug'
//$data = SeasLog::analyzerDetail(SEASLOG_DEBUG);
//print_r($data);*/
//7.作者提供了一个通用的方法记录日志
SeasLog::log('debug','debugdebug');
SeasLog::log('info','infoinfo');
查看全部
phpize运行过后多出一个configure文件
查看全部
pecl.php.net php常用扩展网站 搜索seaslog
phpize php自带的一个解压php扩展的命令
make && make install 编译和安装
php.ini extension= "seaslog.so"
seaslog扩展 按照正常的php扩展来安装,配置项要到github里找,修改log存储基本目录
查看全部
SeasLog的优点:1、高性能2、无需配置、3、功能完善、使用简单
查看全部
对于普通用户,日志功能不会带来更多好处,而且会给系统增加更多的负担。
为什么需要日志功能
1.了解系统运行情况(比如一个用户进入我们网站时遇到404错误或其他500错误,或者对接的短信API接口崩溃时,我们可以第一时间知道这个消息,否则需要等到用户反馈才得知);
2.记录用户操作信息(比如有一个电子商城,我们希望知道用户在下单时他传的所有参数是什么,我们也希望知道返回给用户的所有参数是什么。这样可以更好的知道系统运作的流程);
3.收集数据(比如当网站发生了一些500的系统错误,我们希望知道这个500的错误是因为什么引起的,而且发生了多少次,这样也更加方便我们去优化系统的性能)。
查看全部
什么是日志系统
1.记录系统运行时的信息。
2.系统日志:网站总体崩溃或者硬件出现问题时需要记录的一些系统级别的日志;
应用程序日志:MySQL数据库崩溃了或者短信接口崩溃了;
安全日志:MySQL受到了一些入侵或者MySQL注入时需要记录的安全方面的日志信息。
3.日志功能不应该影响到用户的正常使用。
查看全部
0
采集
收起
采集自:林静听蝉
2018-03-04