YII2框架中日志的配置与使用方法实例分析_php实例

来源:脚本之家  责任编辑:小易  

yii\base\Controller是基础类,不具备redirect功能,改成yii\we

本文实例讲述了YII2框架中日志的配置与使用方法。分享给大家供大家参考,具体如下:

控制器,控制器中的文件可以设置class方法,然后class方法访问对应的views中的视图。比

YII2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用。

  最近在学习PHP,着手找一个能快速上手的框架来学习。一开始看兄弟连视频时候讲师推荐ThinkPH

我们在config/web.php中配置如下:

也可直接点“搜索资料”搜索整个问题。 yii2 框架 php gd 图片 搜索资料 本地图片 图片

return [ //log必须在bootstrap期间就被加载,便于及时调度日志消息到目标 'bootstrap' => ['log'], 'components' => [ 'log' => [ //消息跟踪级别,设置yii\log\Dispatcher::traceLevel属性 //YII_DEBUG开启时,日志消息被记录时,追加最多3个调用堆栈信息 'traceLevel' => YII_DEBUG ? 3 : 0, //日志目标,可定义多个 'targets' => [ [ //日志处理器类 'class' => 'yii\log\FileTarget', //日志记录的级别 'levels' => ['error', 'warning'], //定义日志文件 'logFile' => '@runtime/logs/test.log', ], ], ], ], ];

1,项目目录结构分析2,Yii入口文件分析在Yii启动项目时,传递了项目主配

通过下面5个方法,来写入我们自已的日志

迪丽热巴前些日子的旅游照是真的人美条顺啊,腿也太细了吧,和老板杨幂的美腿难分上下,果然人以类聚吼。这些旅游时期的美照也是帮她吸了不少粉。那我们一起来看看她是怎么穿搭的吧~她早期有一个很爱的搭配方式:帽子+墨镜+长款外套+过膝靴,很典型,很热巴。看她的街拍可以发现她非常非常喜欢穿长外套,有过膝的,有过臀的,非常爱穿了。天气热就穿长款防晒服、薄风衣,里面搭短裤、运动鞋等,天气凉就穿西装、衬衣外套、大衣等,里面就搭配紧身打底or过臀裙、过膝靴。她个子有170+,穿长款外套很拉风。而且长款外套真的很实用,尤其是对于经常跑机场的明星来说。除了长款外套,还有短上衣+高腰裤的穿搭。这身look可以说很完美了

//跟踪 Yii::trace('我是一条跟踪'); //消息 YII::info('我是一条消息'); //调试 YII::debug('我是一条调试'); //警告 YII::warning('我是一条警告'); //错误 YII::error('我是一条错误');

1、不系安全带这种情况其实在新手中出现的比较多,有的甚至还会解开安全带下车取卡,按理来说是不会被罚款的,但是如果你是在进站前或者出站后还是没系好安全带,被拍到是会被罚的。当然,这种情况被抓到的概率也不是很大。2、随意变道高速有些路段是不允许随意变道的,会用实线区别,切记,看到实线别变道。这里要特别提醒下,在快到收费站时,往往也标明的是实线,你可别以为这种车速都慢,就到处加塞,这一样的违章,我的身边的朋友就有因此扣分罚款的经历。3、没有标识高速路上没有标识这种情况比较少见,路边既没有标识牌,路面也没有标记,你让我怎么开呢?快了、慢了都要扣分罚款,要是真的行驶在这样的道路上,只能看交警的心情了!4

注意我们上面定义日志的levels为['error', 'warning'],所以日志只会记录这两个级别的信息。

影响紫砂壶的价格因素主要有三个方面,紫砂原料,作者的职称名气,制作工艺。前提是要找靠谱的商家,微商不在这个讨论范围内。自用的话选择500的半手工壶就可以,全手工的话得800左右了,要是泥料上要求高的话在这基础上得再加几百。

有些时候我们并不希望把所有日志写在一起,我们会根据不同模块来写日志,这样以便区分,这就需要用到日志的分类了。

这个事江湖流言甚广。甚至说新电影宣传、以及上各种回忆节目,因为这个缘故,唐僧的扮演者都不是徐少华,而是半路加入的迟重瑞。有人还问,是不是因为迟有钱而徐落魄吗?从媒体上透露出来的若干信息看,如果说徐六有点问题,可能是源自对《西游》改编版的态度不同。六小的态度很明确,《西游记》作为古典名著,不应该被戏说恶搞。而他师傅唐僧却很大度,说恶搞也无妨,关键是能搞出东西来——他还特地点名,说《大话西游》不也很受欢迎吗。不过,对于张纪中批驳旧版《西游记》中的唐僧是个小白脸,唯唯诺诺,与历史不符诸如此类云云,徐少华也说的明白:“张纪中就惯用骂别人的手段来炒作自己,他还常骂六小龄童。”(自然,历史上的玄奘确实不唯

重新配置config/web.php如下:

'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', //日志记录的级别 'levels' => ['error', 'warning'], //追加上下文信息,默认YII会包含PHP全局变量,这里我们不需要,设为空。 'logVars' => [], //定义分类 'categories' => ['db'], ], [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', //日志记录的级别 'levels' => ['error', 'warning'], //追加上下文信息,默认YII会包含PHP全局变量,这里我们不需要,设为空。 'logVars' => [], //定义分类 'categories' => ['pay'], ], ], ],

通过如下方法,添加我们的日志

//警告 YII::warning('我是一条数据库警告', 'db'); //错误 YII::error('我是一条数据库错误', 'db'); //警告 YII::warning('我是一条支付警告', 'pay'); //错误 YII::error('我是一条支付错误', 'pay');

由于上面的配置我们使用了DbTarget,我们还需要添加一张日志表,用于记录我们的日志,进入项目目录。运行如下命令:

yii migrate --migrationPath=@yii/log/migrations

当然categories我们也可以指定为YII的类

'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', //日志记录的级别,这里演示设为info 'levels' => ['info'], //定义分类 'categories' => ['yii\db\*'], ], ], ],

然后我们操作一下数据库,看是否日志记录了。

<?php namespace app\controllers; use YII; use yii\db\Query; use yii\web\Controller; class TestController extends Controller { public function actionTest() { $data = (new Query())->from('{{%user}}') ->where('id=:id', [':id' => '1']) ->all(); var_dump($data); } }

日志消息的格式化,我们可以自定义日志的前缀。

'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', 'levels' => ['error', 'warning'], //定义分类 'categories' => ['db'], //定义前缀 'prefix' => function($message) { $uid = !empty(YII::$app->user->id) ? YII::$app->user->id : '-'; $mid = !empty(YII::$app->module->id) ? YII::$app->module->id : '-'; $cid = !empty(YII::$app->controller->id) ? YII::$app->controller->id : '-'; $aid = !empty(YII::$app->controller->action->id) ? YII::$app->controller->action->id : '-'; return "[{$uid}][{$mid}/{$cid}/{$aid}]"; }, ], ], ],

使用如下代码,记录日志,查看效果

YII::warning('我是警告!!!', 'db'); YII::error('我是错误!!!', 'db');

由于没有登陆和分模块,所以没获取到用户ID和模块ID,不过控制器ID和方法ID都获取到了。

消息的刷新和导出

'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, //消息被存放在一个数组里,积累到一定数量,才会被刷新到日志target //通过flushInterval设置消息刷新到日志target的数量 'flushInterval' => 100, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], [ //日志处理器类,这里我改用数据库存日志了 'class' => 'yii\log\DbTarget', //当消息刷新到日志对象时,并不会立即导出,只有累积到一定数量才会导出 //通过exportInterval来设置这个导出数量 'exportInterval' => 100, 'levels' => ['error', 'warning'], //定义分类 'categories' => ['db'], ], ], ],

有人会问YII2设置flushInterval和exportInterval的作用是什么,因为在一些系统中日志的操作会很频繁,如果频繁的读取文件或数据库来写日志,会造成严重的IO消耗,降低系统性能,这也是YII2的一个优化吧。

当然有些时候一些长时间在控制台运行的程序,需要立即显示日志,那么可以通过如下配置:

'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'flushInterval' => 1, 'targets' => [ [ 'class' => 'yii\log\FileTarget', 'levels' => ['error', 'warning'], ], [ 'class' => 'yii\log\FileTarget', 'exportInterval' => 1, 'levels' => ['error', 'warning'], //定义分类 'categories' => ['db'], ], ], ],

将flushInterval和exportInterval分别设为1。

有些时候我们需要人为的开启和关闭某些日志目标,这时就需要我们为每个日志目标设个键,以区分。

'log' => [ 'traceLevel' => YII_DEBUG ? 3 : 0, 'targets' => [ 'pay' => [ 'class' => 'yii\log\DbTarget', 'levels' => ['error', 'warning'], 'categories' => ['pay'], ], 'db' => [ 'class' => 'yii\log\DbTarget', 'levels' => ['error', 'warning'], 'categories' => ['db'], ], ], ],

然后通过如下,进行开启和关闭:

//关闭 Yii::$app->log->targets['db']->enabled = false; //开启 Yii::$app->log->targets['db']->enabled = true;

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

PHP框架Yii2怎么使用内置方法更新配置文件

参考下这篇文章吧

http://www.jb51.net/article/54064.htm

PHP Yii2开发框架有什么优势好处

Yii容易学习和使用。只需要知道PHP和面向对象编程,便可以很快上手,而不必事先去学习一种新的架构或者模板语言。

用Yii的开发速度非常之快,除框架本身之外,需要为应用所写的编码极少。造就了Yii是最高效的开发框架之一。

Yii 具有高度的可重用性和可扩展性,是纯粹的面向对象。Yii中的一切都是独立的可被配置,可重用,可扩展的组件。更重要的是Yii有着越来越多的扩展库。主要由使用者贡献出的组件组成,这可能有助于大大减少开发时间。

Yii 有着丰富的功能,从MVC, DAO/ActiveRecord, 到主题化, 国际化和本地化, Yii 提供了几乎所有今天的Web 2.0应用程序开发所需的功能。

Yii参考手册是Yii完备的文档,有着学习和掌握它所需要的任何资料和信息。

Yii一开始就精心设计,以适应复杂的Web应用开发。它不是某个项目的副产品或者第三方集成。而是融合了作者丰富的Web应用开发经验和其它热门 Web 框架和应用的优秀思想的结晶。

最后,重要的一点:Yii是免费的,Yii遵循最新的BSD许可。它确保了它的第三方开发也循序和BSD相兼容的许可。这意味着无论从法律上还是财务上来说,都可以自由的使用Yii来开发任何一个开源的或者私有的应用。

它非常令人印象深刻的是,性能指标相比其他基于PHP的框架有明显效率,立即吸引了非常积极的关注并受到许多开发者的欢迎。本回答被网友采纳

PHP中使用YII框架的问题

因为你Users Model的对应的表明没改,在这个Users模型类里,有这样的方法:

public static function tableName()

{

return '{{%users1}}'; // users1是你的新表名

}

而且直接执行Sql查询,好像不是这样用的吧?

我一般都是这样的

Yii::$app->getDb()->createCommand($sql)->queryAll()

Yii::$app->getDb()->createCommand($sql)->queryOne()

Yii::$app->getDb()->createCommand($sql)->excute()

....

区别你可以看看源代码的说明。(Yii2上的用法,yii1.x应该差不多,你稍微改改就应该没问题)

yii2 main.php 配置的路径怎么用

下载并将里面的文件解压至D:\wamp\www\yii2advanced 里(注意:我是将压缩包里advanced文件夹里的文件解压在这里,而不是将advanced文件夹解压在此)。

然后双击init.bat进行初始化(如果你是使用基础模板则不用此步骤),输入数字0并回车选择Development模式,输入yes并回车确定。

  • 本文相关:
  • yii2框架中日志的使用方法分析
  • yii框架日志操作图文与实例详解
  • yii框架日志记录logging操作示例
  • yii框架实现记录日志到自定义文件的方法
  • 全面解读php的yii框架中的日志功能
  • yii framework框架教程之日志用法详解
  • php的yii框架的常用日志操作总结
  • 详解php的yii框架中日志的相关配置及使用
  • laravel 关联关系遍历数组的例子
  • laravel实现上传图片,并且制作缩略图,按照日期存放的代码
  • thinkphp5.1验证码及验证码验证功能的实现详解
  • php中用加号与用array_merge合并数组的区别深入分析
  • php+mysql开源xna 聚合程序发布 下载
  • thinkphp分页类使用详解
  • 一个php的zip压缩类分享
  • 在laravel-admin中列表中禁止某行编辑、删除的方法
  • php7.0版本备注
  • php+fastcgi+nginx配置php运行环境
  • PHP框架Yii2怎么使用内置方法更新配置文件
  • PHP Yii2开发框架有什么优势好处
  • PHP中使用YII框架的问题
  • yii2 main.php 配置的路径怎么用
  • yii2 怎么批量删除
  • 在php的yii2框架控制器中,return $this->redirect(['si...
  • yii2高级框架怎么整合前台html页面
  • php yii2框架 模型层放在的是哪一个文件夹
  • 在YII2框架中,用PHP的GD库处理上传后的图片,把该图片裁剪成圆形的图片再供前端下载.
  • yii框架调用接口代码一般放在哪个目录下
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全php基础php技巧php实例php文摘php模板首页php编程php实例yii框架入门及常用技巧总结php优秀开发框架总结smarty模板入门基础教程php面向对象程序设计入门教程php字符串(string)用法总结php+mysql数据库操作入门教程php常见数据库操作技巧汇总yii2框架中日志的使用方法分析yii框架日志操作图文与实例详解yii框架日志记录logging操作示例yii框架实现记录日志到自定义文件的方法全面解读php的yii框架中的日志功能yii framework框架教程之日志用法详解php的yii框架的常用日志操作总结详解php的yii框架中日志的相关配置及使用laravel 关联关系遍历数组的例子laravel实现上传图片,并且制作缩略图,按照日期存放的代码thinkphp5.1验证码及验证码验证功能的实现详解php中用加号与用array_merge合并数组的区别深入分析php+mysql开源xna 聚合程序发布 下载thinkphp分页类使用详解一个php的zip压缩类分享在laravel-admin中列表中禁止某行编辑、删除的方法php7.0版本备注php+fastcgi+nginx配置php运行环境php获取数组长度的方法(有实例)微信公众平台实现获取用户openid教你如何使用php session使用php生成二维码的两种方法(带php发送get、post请求的6种方法简php中把stdclass object转array的微信公众平台网页授权获取用户基laravel框架数据库curd操作、连贯php删除数组中空值的方法介绍php字符串的连接的简单实例thinkphp中空模板与空模块的用法实例yii实现model添加默认值的方法(2种方法)smarty模板引擎基础知识入门基于php技术开发客服工单系统ci框架安全过滤函数示例thinkphp实现多字段模糊匹配查询的方法阿里对象存储oss在laravel框架中的使用方php采集类snoopy抓取图片实例微信公众号实现会员卡领取功能php经典面试题之设计模式(经常遇到)
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved