YII2中实现操作日志记录

操作日志记录

对操作日志进行记录,这个可以清晰的对用户(管理员)的操作行为进行记录。这个对于后期的一些必要查询等操作是很方便的。

YII2日志框架

Yii提供了一个强大的日志框架,这个框架具有高度的可定制性和可扩展性。使用这个框架, 你可以轻松地记录各种类型的消息,过滤它们, 并且将它们收集到不同的目标,诸如文件,数据库,邮件。
使用Yii日志框架涉及下面的几个步骤:

  • 在你代码里的各个地方记录 log messages;
  • 在应用配置里通过配置 log targets 来过滤和导出日志消息;
  • 检查由不同的目标导出的已过滤的日志消息(例如:Yii debugger)。

在这个地方,我简单的展示一下Log框架的部分功能,因为我们今天所使用的是自定义的操作日志功能实现。
点击了解YII2日志框架详情
下载一个Yii2框架,修改config->web.php文件:

...
 'log' => [
             //设置 flushInterval 和 exportInteval 属性的值为 1 所有日志消息立即导出在日志文件中
            'flushInterval' => 1,
            'traceLevel' => YII_DEBUG ? 3 : 0,
            'targets' => [
                [

                    //注释日志目标级别(levels )属性。
                    //所有类别的日志消息(错误,警告,信息,跟踪)将会记录在日志文件中。
                    'class' => 'yii\log\FileTarget',
                    'exportInterval' => 1,
                    'logVars' => [],
                    //'levels' => ['error', 'warning'],
                ],
            ],
        ],
...

然后在默认的SiteController控制器中添加actionLog方法

public function actionLog() {
   Yii::trace('trace log message');
   Yii::info('info log message');
   Yii::warning('warning log message');
   Yii::error('error log message');
}

运行:域名/index.php?r=site/log
查看: app/runtime/logs 目录下的 app.log 文件,会出现相关的日志信息

自定义操作日志记录功能

使用beforAction方法:
Controller或者ActiveController的拦截器是在behavior中进行定义的,而Controller/ActiveController的拦截器的函数必须定义beforeAction 和afterAction,这是为什么呢,因为这是当前父类Controller的父类\yii\web\Controller定义的。
不过这个地方我们暂时不使用behavior行为,单纯的使用beforAction方法来进行实现。
我写一个例子:TestController控制器继承自公共控制器CommonController,CommonTroller控制器又继承自ActiveRecord
CommonController:

<?php
/**
 * Created by PhpStorm.
 * User: 0375
 * Date: 2018/4/27
 * Time: 14:34
 */
namespace app\modules\v1\controllers;

use yii;
use yii\rest\ActiveController;

class CommonController extends ActiveController
{
    public function beforeAction($action)
    {
            parent::beforeAction($action);//进行父类重写
            $controller = Yii::$app->controller->id;//控制器名称
            $action = $this->action->id;//方法名称
            $ip = $_SERVER["REMOTE_ADDR"];//用户IP
            $info = 'IP:'.$ip.'----'.'操作URL:'.$controller.'/'.$action;
            file_put_contents("a.txt",$info);//模拟插入数据库暂时写入文件中,你可以直接插入数据库
            return true;
    }

}

TestController:

/**
     * Displays testpage.
     *
     * @return string
     */
    public function actionTest()
    {
        return $this->render('test');
    }

访问:域名/index.php?r=test/test跳转到test页面,但是此时在web根目录下会出现一个a.txt文件,里面就是先关的操作记录
如下:IP:127.0.0.1—-操作URL:test/test
这样,稍作修改,一个简单的操作日志记录功能就实现了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

millet109

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值