栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

SWOOLE 从入门到放弃之写个小框架(十六)

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SWOOLE 从入门到放弃之写个小框架(十六)

任何框架都必须有Log类,咱们也不能免俗。我决定了,写日志要用异步写文件swoole_async_writefile ,介绍看官网 https://wiki.swoole.com/wiki/page/185.html。用法很简单,和file_put_contents很相似。

Log类,必须具备的几个特性,可以记录你想记录的日志,便于调试,不同类型的日志区分存储,最好是分时存储。咱们就照着这个目标来写它。当然了,我还是要用单例模式来写,并且写的还是很简单。
首先,我们给它一些配置信息,比如,规定要存储的日志类型,存储位置等信息,还有一个,因为我们是在终端开发和调试,我们最好还要控制它是否回显到屏幕。。
首先打开frame.base.php ,增加define('LOG_PATH',dirname (__DIR__).'/logs/');//Logs路径
打开config/app.php,在它的下边增加如下代码

//日志
    'log' => [
 //输出到屏幕,当 set.daemonize = false 时,该配置生效,
 'echo'  => 0 ,
 // 日志保存目录
 'path'  => LOG_PATH,
 // 日志记录级别,共8个级别
 'level' => ['EMERGENCY','alert','CRITICAL','ERROR','WARNING','NOTICE','INFO','DEBUG','SQL'] ,
    ] ,

创建frame/Lib/Log.php,贴代码

get('app.log');
     self::$instance = new self();
 }
 return self::$instance;
    }

    
    public function write($type,...$logs){
 $type = strtoupper ($type);
 $msg = "{$type} t ".date("Y-m-d h:i:s")." t ".join (" t ",$logs);
 if( !in_array($type,self::$config['level'])) return false;
 if(self::$config['echo']){
     echo $msg,PHP_EOL;
 }
 $this->save($type,$msg);
    }
    public function save($type,$msg){
 if (empty(self::$logs)) return false;
 $dir_path = LOG_PATH.date('Ymd').DIRECTORY_SEPARATOR;
 !is_dir($dir_path) && mkdir($dir_path,0777);
 $filename  = date("h").'.'.$type.'.log';
 swoole_async_writefile($dir_path.$filename , $msg, NULL, FILE_APPEND);
 return true;
    }

}

为了便于操作,必须在frame/helper.php下暴露一个简单的调用方法,代码如下

function logs($type,...$log){
    get_instance('PizLog')->write($type,...$log);
}

现在它可以用了,无论在哪个位置,都可以用了,在框架内,我建议用长方法Log::get_instance()->write('XXX','XX','XXX'),在项目中建议使用logs('xxxx','xx','xx')
小伙伴们请求意Log::get_instance()->write($type,...$logs),后面的 ...$logs 它是一个标量,关于PHP7的标量说明,请看官网 http://php.net/manual/zh/migration70.new-features.php。

小伙伴们可以在任何需要调用它的位置来记录日志了。

我试着启动运行并用ab压测了一下,QPS怎么只有1K多,这离我设定的10K的目标差太多了。。。。
什么情况,这一切的背后, 是人性的扭曲还是道德的沦丧?
请看下一期,优化Log,拉高性能。。

代码已上传到码云。。https://gitee.com/pizzzz/piz.git

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/228843.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号