tp/docs/operation_log_usage_simple.md
2026-01-26 09:29:36 +08:00

4.8 KiB
Raw Blame History

操作日志使用说明(简化版)

快速开始

最简单的使用方式

// 记录成功日志
$this->logSuccess('文件管理', '创建文件分组', ['id' => $id]);

// 记录失败日志
$this->logFail('文件管理', '创建文件分组', $e->getMessage());

就这么简单!只需要两行代码。

完整示例

示例1创建文件分组

public function createFileCate()
{
    try {
        $data = Request::param();
        $data['create_time'] = date('Y-m-d H:i:s');
        $id = FilesCategory::insertGetId($data);
        
        // 记录成功日志
        $this->logSuccess('文件管理', '创建文件分组', ['id' => $id]);
        
        return json([
            'code' => 200,
            'msg' => '新建文件分组成功',
            'data' => ['id' => $id]
        ]);
    } catch (\Exception $e) {
        // 记录失败日志
        $this->logFail('文件管理', '创建文件分组', $e->getMessage());
        
        return json([
            'code' => 500,
            'msg' => '新建文件分组失败: ' . $e->getMessage()
        ]);
    }
}

示例2删除文件

public function deleteFile($id)
{
    try {
        Files::where('id', $id)->delete();
        
        // 记录成功日志
        $this->logSuccess('文件管理', '删除文件', ['id' => $id]);
        
        return json(['code' => 200, 'msg' => '删除成功']);
    } catch (\Exception $e) {
        // 记录失败日志
        $this->logFail('文件管理', '删除文件', $e->getMessage());
        
        return json(['code' => 500, 'msg' => $e->getMessage()]);
    }
}

示例3添加用户

public function addUser()
{
    try {
        $data = Request::param();
        $userId = AdminUser::insertGetId($data);
        
        // 记录成功日志
        $this->logSuccess('用户管理', '添加用户', ['id' => $userId]);
        
        return json(['code' => 200, 'msg' => '添加成功']);
    } catch (\Exception $e) {
        // 记录失败日志
        $this->logFail('用户管理', '添加用户', $e->getMessage());
        
        return json(['code' => 500, 'msg' => $e->getMessage()]);
    }
}

方法说明

BaseController 提供的方法

所有继承 BaseController 的控制器都可以使用以下方法:

1. logSuccess() - 记录成功日志

$this->logSuccess(string $module, string $action, array $responseData = [])

参数:

  • $module: 模块名称(如:文件管理、用户管理等)
  • $action: 操作名称(如:创建文件分组、删除文件等)
  • $responseData: 响应数据(可选,如:['id' => 123]

示例:

$this->logSuccess('文件管理', '创建文件分组', ['id' => $id]);

2. logFail() - 记录失败日志

$this->logFail(string $module, string $action, string $errorMessage)

参数:

  • $module: 模块名称
  • $action: 操作名称
  • $errorMessage: 错误信息

示例:

$this->logFail('文件管理', '创建文件分组', $e->getMessage());

3. logOperation() - 完整版(需要更多控制时使用)

$this->logOperation(
    string $module,
    string $action,
    array $requestData = [],
    array $responseData = [],
    int $status = 1,
    string $errorMessage = ''
)

直接使用 OperationLogger 类

如果不继承 BaseController可以直接使用

use app\admin\common\OperationLogger;

// 记录成功
OperationLogger::success('文件管理', '创建文件分组', ['id' => $id]);

// 记录失败
OperationLogger::fail('文件管理', '创建文件分组', $e->getMessage());

// 完整版
OperationLogger::record(
    '文件管理',
    '创建文件分组',
    Request::param(),  // 请求数据(可选)
    ['id' => $id],     // 响应数据(可选)
    1,                 // 状态1-成功0-失败
    ''                 // 错误信息(可选)
);

模块和操作命名建议

模块名称:

  • 文件管理
  • 用户管理
  • 角色管理
  • 文章管理
  • 菜单管理
  • Banner管理
  • 单页管理
  • 系统设置

操作名称:

  • 创建文件分组
  • 重命名文件分组
  • 删除文件分组
  • 上传文件
  • 删除文件
  • 移动文件
  • 添加用户
  • 编辑用户
  • 删除用户
  • 修改密码
  • 等等...

注意事项

  1. 自动获取:请求数据会自动获取,无需手动传递
  2. 敏感信息过滤密码、token 等敏感信息会自动过滤
  3. 错误处理:日志记录失败不会影响主业务流程
  4. 按需记录:只在需要记录的操作中添加日志代码

总结

推荐使用方式:

// 成功时
$this->logSuccess('模块名称', '操作名称', ['响应数据']);

// 失败时
$this->logFail('模块名称', '操作名称', '错误信息');

就这么简单!