yii2之log组件学习

1、配置阶段

  1)log组件放入bootstrap配置中,用于初始化启动

  2)components中配置log的日志消费处理类

    

2、启动逻辑

  1)yii框架实例化组件log,coreComponents方法默认指定log对应yii\log\Dispatcher类

  2)Dispatcher类实例化,__construct方法根据配置设置静态常量logger,然后调用父类的__construct方法(即Object的)将参数设置为实例的属性,如果配置没有配置logger,则设置成默认的yii\log\Logger类

  3)然后Dispatcher类再调用init方法,将配置中的targets里的日志消费处理类实例化

  4)至此,log类已经启动完成,可以等待产生日志了

3、产生日志及日志消费逻辑

  1)调用Yii::trace、Yii::error、Yii::info、Yii::warning产生日志

  2)框架读取静态常量logger,来调用log方法

  3)log方法根据一定条件触发flush方法,用于触发日志消费类来消费日志数据

  4)flush方法中读取dispatcher实例,调用dispatcher方法,将日志数据路由

  5)dispatcher方法循环遍历配置中的日志消费类实例,调用collect方法来收集日志数据

  6)collect方法根据配置中设置的levels来过滤日志,最后调用export方法将日志消费(不同的日志消费类有自己的export方法)

  7)至此产生日志及日志消费逻辑结束

				
时间: 2024-10-17 17:04:52

yii2之log组件学习的相关文章

GitHub--FoldAbleLayout可折叠组件学习(二)

接上文: GitHub–FoldAbleLayout可折叠组件学习(一) 遗留问题 同样是使用Picasso,图片存于drawable文件夹中,RecycleView的界面滑动十分卡顿.查看Github作者的例子,图片存在assets文件夹中存放图片,通过Picasso传入图片的路径就可以很流畅的加载出图片. 我分别实验了两种:图片放在drawable文件夹下和asset文件夹下. Drawable文件夹下,AS内存使用情况: 显示内存消耗过多,程序运行卡顿. 在Asset文件夹下,AS的内存使

Android组件学习之ExpandableListView

一个简单的小例子: 可以展开的ListView,和Listview差不多,只是设置的Adapter不同.常用的Adapter有BaseExpandableListAdapter.SimpleExpandableListAdapter.SimpleCursorTreeAdapter 布局如下:(布局中我设置了android:groupIndicator,不知道为什么不起作用.另外,android:dividerHeight这个属性是组对象和子节点共用的.如果要定义比较复杂的组视图及子节点视图,还是

Indy10 控件的使用(2)TidTCpServer组件学习

Indy10 控件的使用(2)TidTCpServer组件学习 (2012-05-18 15:16:53) 转载▼ 标签: indy10 lazarus idtcpserver 分类: Indy10 以下来自英文原版帮助文件,文桓英语不好,翻译了老半天.有错误的地方见谅,别骂我. TIdTCPServer = class(TIdComponent) Description TIdTCPServer is a TIdComponent descendant that encapsulates a

react native组件学习(四)

PullToRefreshViewAndroid学习 PullToRefreshViewAndroid是一个视图,可以放置单个可滚动子视图,当子视图的竖直方向偏移(scrollY)为0时,将其下拉可以触发一个onRefresh事件. 在学习PullToRefreshViewAndroid组件之前,如果没有一定的基础,建议先阅读前面的文章,因为,这里我在之前学习ScrollView的基础上,添加PullToRefreshViewAndroid功能.当前的代码如下: 'use strict'; va

Android 四大组件学习之BroadcastReceiver一

本节课学习四大组件最后一个, 广播接受者. 顾名思义广播接受者就是接受广播呗.比如在现实社会中,以前每个人家都有一台收音机,这可就可以去接受广播发出来的消息.大家都知道,程序世界也是参照的显示生活设计出来的,那在Android系统中也引入了广播这个概念.那在Android系统中广播有什么作用呢? 举个例子:比如你正在玩游戏或者看视频突然手机电量过低,这时候就会弹出一个框,提醒您手机电量过低,请充电的提示.其实电量改变就是一种广播类型,当电量过低时,系统就会发生一条广播,这时候正在运行的程序就会收

Android 四大组件学习之BroadcastReceiver四

本节学习系统中特殊的广播接收者. 我们前面几节不是说了,当广播接受者一旦注册到系统中,当系统发送的广播和你注册的广播的action匹配时,系统就会启动广播接收者所在的进程.除非用户手动停止广播接收者所在的进程.但是生活中有这样一种情况,比如说:我在玩网络游戏,假设说游戏本身在系统电量低的情况下,会自动保存当前游戏的进度,也就是存档的.可以这么说,此广播接受者只有在用户玩游戏时才需要启动,别的时候用户是不需要的.如果此广播接收者一直常驻于系统,那不是很浪费系统资源.所以我们就需要动态的启动广播接收

Android 四大组件学习之Activity六

本节学习Activity的状态保存与恢复. 先用例子开始: 布局文件主要是实现如下,大家自行编写 Activity逻辑代码: public class FiveActivity extends Activity { private Button setButton; private Button getButton; private EditText editText; private float value; @Override protected void onCreate(Bundle s

WebView组件学习以及WebViewClient 的方法解释

在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView组件.利用WebView组件就可以做出款完全属于自己的手机浏览器,就想在windows上用IE内核做一个浏览器一样! 1.因为是浏览器,访问网络是必须的.所以,AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误. 2.设置浏览器是否运行网页上的javascript代码:

php header调试,yii2打log

1  通过header来强制刷新view:在页面最开始添加 <?php header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Cache-Control: no-cache"); header("Pragma: no-cache"); ?> 2  跳转到错误页,打印出来错误信息:  当值异常时,跳转到error.php页面,并把错误信息打印出来,在web文件夹下新建一个er