logo头像

Hello World

Yii2 Audit插件的使用【日志记录插件】

Yii2 Audit 插件的使用

Yii2-Audit插件是一个功能齐全的,用于记录和显示web 、 cli请求、数据库更改、php /js错误和相关数据的插件。

并且该插件是以module的形式安装于Yii中,使用起来极为方便。

项目地址:https://github.com/bedezign/yii2-audit

文档地址:https://bedezign.github.io/yii2-audit/

功能清单[点击可跳转到对应介绍]


1.安装

  • 1.1 本插件依赖于PHP mail parse扩展,如若使用请安装php_mailparse 并修改php.ini 启用该扩展

  • 1.2 使用Composer安装源文件

    1
    composer require --prefer-dist bedezign/yii2-audit:"dev-master"
  • 1.3 导入数据库

    1
    php yii migrate --migrationPath=@bedezign/yii2/audit/migrations

注意:导入前common/main-local里的数据库必须有一个名称为db的数据库配置。否则会报错。

1
2
3
4
5
6
7
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;port=3306;dbname=yii2-audit',
'username' => 'root',
'password' => '',
'charset' => 'utf8',
],

然后访问yourdomain.com/index.php?r=audit 即可查看访问详细情况。如图:
entries.png


2.Audit功能使用介绍

按照1.安装里面介绍的步骤,可能会出现没有权限访问的情况,那么接下来介绍如何配置该插件并详细介绍其功能。

2.1 【Entries】记录Web、Cli请求

  • 记录字段如下:
记录字段名称 解释 其它说明
User 默认记录操作用户ID -
IP 记录操作者IP -
Request Method 请求方法 例如GET、POST、HEAD、PUT等
Ajax 是否是异步请求 -
Route 请求的路由地址 -
Duration 请求响应时长 -
Memory 内存占用 -
Created 请求时间 -
  • 配置 本功能是插件的核心功能,因此若要使用其它功能,必须先把这里配置好。

完整配置请查看:https://bedezign.github.io/yii2-audit/docs/module-configuration/

以下内容均为config/main.php配置文件的内容。

1
2
3
4
5
6
'modules' => [
'audit' => [
'class' => 'bedezign\yii2\audit\Audit',
          //在此加入下文介绍的配置
     ]
]

  • db 指定数据库连接
    在使用了多数据库后,可以通过以下配置来指定一个数据库链接。

    1
    'db' => 'myAuditDatabase',
  • trackActions 要监听的action

    1
    'trackActions' => ['*'], //监听全部action
  • ignoreActions 要屏蔽的action,设置后将不在日志里记录这些action

    1
    'ignoreActions' => ['audit/*', 'debug/*'], //设置不记录audit组件内的所有操作和debug路由下的所有操作
  • accessIps 允许访问audit组件的IP列表

    1
    'accessIps' => ['127.0.0.1', '192.168.*'], //允许本地IP和192.168.IP段下的IP访问。如果为null则允许任何人访问
  • accessRoles 允许访问的角色列表

    1
    'accessRoles' => ['admin'], //设置角色为admin的角色可以访问audit组件。如果为null则允许任何人访问
  • accessUsers 允许访问的User ID列表。

    1
    'accessUsers' => [1,2],  //设置ID为1或2的用户可以访问audit组件,如果为null则允许任何人访问
  • maxAge 日志生命周期 单位:天

    1
    'maxAge' => 'debug', //永不删除
  • compressData 压缩数据。

  • panels 日志数据面板

    1
    2
    3
    4
    5
    'panels' => [
     'audit/request', //显示请求内容面板
     'audit/error', //显示错误信息面板
     'audit/trail', //显示数据库信息面板
    ],

支持的面板列表如下:

  • RequestPanel //跟踪所有传入web和控制台的请求数据。
  • AssetPanel //显示载入的前端资源
  • ConfigPanel //Yii 和PHP配置
  • DbPanel //数据库查询信息
  • ErrorPanel //记录PHP异常、错误。
  • JavascriptPanel //自动记录JavaScript错误信息
  • LogPanel //Yii日志
  • MailPanel //邮件记录 这里必须开启PHP的PHPmail扩展,不然报错
  • ProfilingPanel //应用程序配置信息
  • TrailPanel //数据库变更记录
  • ExtraDataPanel //额外定义的数据
  • CurlPanel //记录应用的cURL请求。(包含响应,日志,和请求头)
  • SOAPPanel //记录应用的SOAP请求
  • YourOwnPanel //自定义Panel
  • 通过路由 yourdomain.com/audit/entry/index 查看Web、Cli请求记录。

在记录以上字段的同时,如果配置了【Trails】【Mails】【Javascripts】【Errors】,则会显示对应的,通过该请求造成的【Trails】记录ID,【Mails】记录ID,【Javascripts】记录ID和【Errors】记录ID。
如图:
POST记录.jpg
在POST hly-base-info/create 的同时,影响了数据库,并且在HlyBaseInfomodel里配置了AuditTrailBehavior,因此会记录数据库变更。数据库变更记录配置详见2.2

这里的Trails ID只是本次请求,导致的所有数据库变更中的最后一个,并不是完整的ID数组,完整的数据库变更还是要在Trails里查看。如图

trails ALL.png
在此就可以看到数据库完整的变化,这里的Entry ID指向了对应的操作日志。

  • 查看请求详细记录

通过上面的列表,点击最左侧图标进入详细查看。里面提供了类似Yii2 Debug的功能。在显示请求详细的同时,也会附带几个面板[可通过配置决定显示哪些panel。如图:

panel.jpg

2.2【Trails】记录数据库变更

  • 记录字段
记录字段名称 解释 其它说明
Entry ID 操作记录ID -
User ID 操作者ID -
Action 动作 Create、Update、Delete 等
type model路径 eg.backend\models\HlyBaseInfo
model ID model ID -
Field 受影响的字段 -
Diff 改变前后对比 这里会列举该记录被操作前的数据和被改变后的数据。如下图:

updateLog.jpg

  • 配置

记录数据库变更也很方便,只需要在需要记录的model的behaviors函数内加入AuditTrailBehavior:

1
2
3
4
5
6
public function behaviors()
{
return [
'bedezign\yii2\audit\AuditTrailBehavior'
];
}

比如记录Post表的变更记录。[会记录增/删/改操作]

1
2
3
4
5
6
7
8
9
10
<?php
class Post extends \yii\db\ActiveRecord
{
public function behaviors()
{
[
'class'=> 'bedezign\yii2\audit\AuditTrailBehavior'
],
}
}

效果如图:
trails.png

2.3 记录JavaScript错误记录

  • 记录字段
记录字段名称 解释 其它说明
Entry ID 操作记录ID -
Type 错误类型 -
Origin 错误来源 例如 localhost/:31:5 //代表HTML源代码第31行有JavaScript错误
Message 错误信息 例如 Uncaught ReferenceError: alert1 is not defined
  • 配置

记录JavaScript错误记录只需要在view视图里使用audit提供的JSLoggingAsset注册当前资源。

1
2
<?php
\bedezign\yii2\audit\web\JSLoggingAsset::register($this);

2.4 记录Yii2错误记录

  • 记录字段
记录字段名称 解释 其它说明
Entry ID 操作记录ID -
Message 错误信息 -
ErrorCode 错误码 -
File 文件路径 -
Line 导致错误的行号 -
Hash 错误哈希值 -
Created 创建时间 -

如图:
Errors.jpg

  • 配置

记录错误需要在配置文件config/main里配置,注意console的errorHandler需要设置成注释中的配置。

1
2
3
4
5
6
7
8
9
10
11
<?php
$config = [
'components' => [
'errorHandler' => [
// web error handler
'class' => '\bedezign\yii2\audit\components\web\ErrorHandler',
// console error handler
//'class' => '\bedezign\yii2\audit\components\console\ErrorHandler',
],
],
];

上一篇