操作日志

类型 应用插件
版本 1.0.0
版本更新时间 2023-04-02
大小 10.37 KB
开发商
Chance
评分

问题反馈

https://www.workerman.net/q/11077

详细介绍

记录管理员对数据的增删改操作以及请求信息,生成的操作日志可读性高。

安装使用

该插件依赖 webman admin
不要直接将代码复制到项目中,在后台插件市场安装

  1. 直接在 admin 的插件市场安装应用
  2. 在 admin 的 middleware.php 配置文件中增加一个全局中间件 plugin\oplog\app\middleware\AfterOperationLog::class
    • 使用的是 Laravel 的 ORM
      • 修改 config/bootstrap.php 配置文件,增加 plugin\oplog\bootstrap\LaravelHookConnection::class
    • 使用的是 ThinkPHP 的 ORM
      • 修改数据库配置文件中的 typequerybuilder 三个字段
        例如:
        <?php
        return [
        'default' => 'mysql',
        'connections' => [
            'mysql' => [
                // 服务器地址
                'hostname' => 'mysql',
                // 数据库名
                'database' => 'webman_admin',
                // 数据库用户名
                'username' => 'root',
                // 数据库密码
                'password' => 'root',
                // 数据库连接端口
                'hostport' => 3306,
                // 数据库连接参数
                'params' => [
                    // 连接超时3秒
                    \PDO::ATTR_TIMEOUT => 3,
                ],
                // 数据库编码默认采用utf8
                'charset' => 'utf8mb4',
                // 数据库表前缀
                'prefix' => '',
                // 断线重连
                'break_reconnect' => true,
                // 关闭SQL监听日志
                'trigger_sql' => true,
                // 自定义分页类
                'bootstrap' =>  '',
                // 数据库类型
                'type'            => \Chance\Log\orm\think\MySqlConnection::class,
                // 指定查询对象
                "query"           => \Chance\Log\orm\think\Query::class,
                // Builder类
                "builder"         => \think\db\builder\Mysql::class,
            ],
        ],
        ];
  3. 执行 php webman TableModelMapping 命令生成表与模型的映射关系
  4. restart

日志主键

可在模型中设置$logKey属性修改需要记录的主键名称。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // 日志记录的主键名称
    public string $logKey = 'id';
}

可读性设置

通过表注释、字段注释与获取器来生成可读性的日志。

表注释与字段注释

image-20220309172842186

也可以在模型中通过$tableComment$columnComment设置表注释与字段注释。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // 表注释
    public $tableComment = '用户';
    // 字段注释
    public $columnComment = [
        'name' => '姓名',
        'sex' => '性别',
    ];
}

获取器

设置一个名为字段名_text的获取器。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // Laravel ORM 获取器设置方法
    public function getSexTextAttribute($key): string
    {
        return ['女','男'][($key ?? $this->sex)] ?? '未知';
    }

    // ThinkPHP ORM 获取器设置方法
    public function getSexTextAttr($key): string
    {
        return ['女','男'][($key ?? $this->sex)] ?? '未知';
    }
}

日志生成忽略的字段

可在模型中通过 $ignoreLogFields 设置该表不希望生成日志的字段。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // 日志生成忽略的字段
    public $ignoreLogFields = [
        'create_time',
        'update_time',
    ];
}

数据表不生成日志

可在模型中通过 $doNotRecordLog 设置该表不在生成日志。

<?php

namespace Chance\Log\Test\model;

class User extends BaseModel
{
    // 不生成该表的日志
    public $doNotRecordLog = true;
}
版本历史记录
1.0.0
2023-04-02
操作日志
评分及评论
4 满分5分
a8469758 2023-07-13
好多日志都不记录啊
xiewen_kevin 2023-06-06
这安装使用流程文档怎么感觉没写明白一样?下载下来的文件夹都不样
i165 2023-06-03
安装好复杂
yuyu 2023-05-09
有bug
🔝