一個簡單的行為案例。場景是在后臺,每個用戶操作了什么(也就是訪問了那個鏈接),都會記錄日志。
不多說,看代碼:
在common文件夾下新建behaviors文件夾,再創建該類。
<?php
namespace common\behaviors;
use Yii;
use yii\web\Controller;
use yii\base\Behavior;
use yii\web\Request;
class LogactionBehavior extends Behavior
{
/**
* 保存注入的 yii\web\Request 實例
* @var yii\web\Request
*/
private $request;
/**
* 運用傳說中的依賴注入 注入 yii\web\Request
* @param array $config
* @param yii\web\Request $request
*/
public function __construct($config =[],Request $request)
{
parent::__construct($config);
$this->request = $request;
}
/**
* 給事件設置觸發函數。
* 將 beforeAction 函數注冊到 Controller::EVENT_BEFORE_ACTION 事件中
* 將 afterAction 函數注冊到 Controller::EVENT_AFTER_ACTION 事件中
* @return array
*/
public function events()
{
return [
Controller::EVENT_BEFORE_ACTION => 'beforeAction',
Controller::EVENT_AFTER_ACTION => 'afterAction'
];
}
/**
* 每次訪問時,記錄訪問的情況到日志里。
*/
public function beforeAction()
{
$date =date("Y/m/d h:i:sa");
$url = $this->request->url;
$ip = $this->request->userIP;
$params = $this->request->getRawBody();
$log = $date." ".$url." ".$params." ".$ip;
Yii::info($log);
Yii::beginProfile('myBenchmark');//開啟運行分析,會對數據庫查詢時間等信息計入日志,myBenchmark 可修改自己設定標識符,會寫入日志
}
public function afterAction()
{
Yii::endProfile('myBenchmark');//結束運行分析
}
}
注釋寫的很清楚。
控制器中注冊行為
public function behaviors()
{
return [
LogactionBehavior::className(),
];
}
配置在不同的應用配置文件中,配置components屬性
'log'=>[
'targets' => [
[
'class'=> 'yii\log\FileTarget',
'levels' => ['info','profile'],
'logVars' => [],
]
]
]
指定不同的驅動,可將日志保存在不同地方。
簡單用法就這樣,有什么奇淫技巧大家可以一塊討論討論。
- Yii2使用Url組件
- Yii2的Html,Request組件詳解
- YII2.0框架, 多圖片上傳功能
- yii2-imagine配置
- 有潔癖的禁止默認YII自帶垃圾代碼(個人認為)、JS、CSS(新手教程)
- Yii2 API接口輸出統一Json和jsonp格式方法
- MySql 創建表的一些語句釋義
- Yii2聯合查詢(配合GridView)
- Yii 通用系統字典
- ArrayHelper的多維數組排序函數multisort,強大無比。
- 路由規則,在Url中替換使用'/'以外的符號連接
- 從excel文件中讀取表格內容,并批量寫入數據庫
- yii2注冊時驗證用戶名、郵箱等唯一性
- Yii2最全的實戰教程
- Composer安裝yii2-imagine 壓縮,剪切,旋轉,水印
- LinkPager增加總頁數 和總記錄數
- Yii2 獲取模塊名控制器名方法名
- Yii2使用yii2-adminlte+yii2-admin左側菜單子路徑不高亮問題又解
- 前端CSS框架
- Yii2 之 frontend 子模塊實踐之一:添加前后臺子模塊
- Yii2 之 frontend 子模塊實踐之二:構建子模塊的獨立配置
- Yii2 之 frontend 子模塊實踐之三:布局和語言配置
- 完美解決ajax驗證碼不刷新問題,讓驗證碼更加美觀,不修改任何源代碼
- yii2.0 表單小部件常用的默認選中
- Yii2 controller 傳值給layout
- yii2 dropDownList 二級和三級 聯動寫法
- 微信掃碼登錄 新窗口二維碼 掃完關閉二維碼頁面 進入登錄頁面
- yii2 實現 "上一篇,下一篇" 功能
- Yii 行為簡單應用
- SQL語句