記錄管理員對數(shù)據(jù)的增刪改操作以及請求信息,生成的操作日志可讀性高。
該插件依賴 webman admin
不要直接將代碼復(fù)制到項(xiàng)目中,在后臺插件市場安裝
middleware.php
配置文件中增加一個全局中間件 plugin\oplog\app\middleware\AfterOperationLog::class
config/bootstrap.php
配置文件,增加 plugin\oplog\bootstrap\LaravelHookConnection::class
type
、query
、builder
三個字段<?php
return [
'default' => 'mysql',
'connections' => [
'mysql' => [
// 服務(wù)器地址
'hostname' => 'mysql',
// 數(shù)據(jù)庫名
'database' => 'webman_admin',
// 數(shù)據(jù)庫用戶名
'username' => 'root',
// 數(shù)據(jù)庫密碼
'password' => 'root',
// 數(shù)據(jù)庫連接端口
'hostport' => 3306,
// 數(shù)據(jù)庫連接參數(shù)
'params' => [
// 連接超時3秒
\PDO::ATTR_TIMEOUT => 3,
],
// 數(shù)據(jù)庫編碼默認(rèn)采用utf8
'charset' => 'utf8mb4',
// 數(shù)據(jù)庫表前綴
'prefix' => '',
// 斷線重連
'break_reconnect' => true,
// 關(guān)閉SQL監(jiān)聽日志
'trigger_sql' => true,
// 自定義分頁類
'bootstrap' => '',
// 數(shù)據(jù)庫類型
'type' => \Chance\Log\orm\think\MySqlConnection::class,
// 指定查詢對象
"query" => \Chance\Log\orm\think\Query::class,
// Builder類
"builder" => \think\db\builder\Mysql::class,
],
],
];
php webman TableModelMapping
命令生成表與模型的映射關(guān)系可在模型中設(shè)置$logKey
屬性修改需要記錄的主鍵名稱。
<?php
namespace Chance\Log\Test\model;
class User extends BaseModel
{
// 日志記錄的主鍵名稱
public string $logKey = 'id';
}
通過表注釋、字段注釋與獲取器來生成可讀性的日志。
表注釋與字段注釋
也可以在模型中通過$tableComment
與$columnComment
設(shè)置表注釋與字段注釋。
<?php
namespace Chance\Log\Test\model;
class User extends BaseModel
{
// 表注釋
public $tableComment = '用戶';
// 字段注釋
public $columnComment = [
'name' => '姓名',
'sex' => '性別',
];
}
獲取器
設(shè)置一個名為字段名_text
的獲取器。
<?php
namespace Chance\Log\Test\model;
class User extends BaseModel
{
// Laravel ORM 獲取器設(shè)置方法
public function getSexTextAttribute($key): string
{
return ['女','男'][($key ?? $this->sex)] ?? '未知';
}
// ThinkPHP ORM 獲取器設(shè)置方法
public function getSexTextAttr($key): string
{
return ['女','男'][($key ?? $this->sex)] ?? '未知';
}
}
可在模型中通過 $ignoreLogFields
設(shè)置該表不希望生成日志的字段。
<?php
namespace Chance\Log\Test\model;
class User extends BaseModel
{
// 日志生成忽略的字段
public $ignoreLogFields = [
'create_time',
'update_time',
];
}
可在模型中通過 $doNotRecordLog
設(shè)置該表不在生成日志。
<?php
namespace Chance\Log\Test\model;
class User extends BaseModel
{
// 不生成該表的日志
public $doNotRecordLog = true;
}