# 操作日志模块使用说明 ## 概述 操作日志模块用于记录系统中的用户敏感操作,支持按操作级别进行分类,并提供前端界面查看操作历史。 ## 功能特性 1. **操作级别分类**: - `view`: 查看操作(蓝色) - `update`: 更新操作(橙色) - `new`: 新增操作(绿色) - `delete`: 删除操作(红色) - `download`: 下载操作(紫色) - `login`: 登录操作(青色) - `logout`: 登出操作(灰色) - `other`: 其他操作(棕色) 2. **操作结果记录**: - `success`: 成功 - `failure`: 失败 3. **详细信息记录**: - 操作者信息 - IP地址 - 请求方法和路径 - 模块名称 - 操作对象ID ## 使用方法 ### 在视图函数中记录操作日志 #### 1. 导入日志记录函数 ```python from operation_log.views import log_operation, log_success_operation, log_failure_operation ``` #### 2. 记录成功操作 ```python def create(self, request, *args, **kwargs): # ... 执行创建操作 ... serializer.save() # 记录操作日志 log_success_operation( request=self.request, operation_content=f"创建新记录 ID:{serializer.data['id']}", operation_level="new", operator=self.request.auth.name if self.request.auth else None, object_id=serializer.data['id'], module_name="模块名称" ) return Response(serializer.data, status=200) ``` #### 3. 记录更新操作 ```python def update(self, request, pk): # ... 执行更新操作 ... serializer.save() log_success_operation( request=self.request, operation_content=f"更新记录 ID:{pk}:{request.data}", operation_level="update", operator=self.request.auth.name if self.request.auth else None, object_id=pk, module_name="模块名称" ) return Response(serializer.data, status=200) ``` #### 4. 记录删除操作 ```python def destroy(self, request, pk): # ... 执行删除操作 ... log_success_operation( request=self.request, operation_content=f"删除记录 ID:{pk}", operation_level="delete", operator=self.request.auth.name if self.request.auth else None, object_id=pk, module_name="模块名称" ) return Response(status=204) ``` #### 5. 记录失败操作 ```python def create(self, request, *args, **kwargs): try: # ... 执行操作 ... serializer.save() log_success_operation( request=self.request, operation_content="创建记录成功", operation_level="new", module_name="模块名称" ) return Response(serializer.data, status=200) except Exception as e: # 记录失败操作 log_failure_operation( request=self.request, operation_content=f"创建记录失败: {str(e)}", operation_level="new", module_name="模块名称" ) raise APIException({"detail": str(e)}) ``` #### 6. 记录查看操作 ```python def retrieve(self, request, pk): obj = self.get_object() log_operation( request=self.request, operation_content=f"查看记录 ID:{pk}", operation_level="view", operator=self.request.auth.name if self.request.auth else None, object_id=pk, module_name="模块名称" ) serializer = self.get_serializer(obj) return Response(serializer.data) ``` #### 7. 记录下载操作 ```python def download_file(self, request, pk): # ... 执行下载操作 ... log_success_operation( request=self.request, operation_content=f"下载文件 ID:{pk}", operation_level="download", operator=self.request.auth.name if self.request.auth else None, object_id=pk, module_name="模块名称" ) return response ``` ## API接口 ### 获取操作日志列表 **GET** `/operation_log/` **查询参数**: - `page`: 页码(默认:1) - `page_size`: 每页数量(默认:11) - `operation_level`: 操作级别(可选值:view, update, new, delete, download, login, logout, other) - `operation_result`: 操作结果(可选值:success, failure) - `module_name`: 模块名称 - `operator`: 操作者(支持模糊搜索) - `operation_content__icontains`: 操作内容(模糊搜索) - `operation_time__range`: 操作时间范围(格式:YYYY-MM-DD,YYYY-MM-DD) **示例**: ``` GET /operation_log/?operation_level=delete&operation_result=success&page=1 ``` ### 获取操作日志详情 **GET** `/operation_log/{id}/` ## 前端界面 前端操作日志页面路径:`/operationlog` **功能**: 1. 显示所有操作日志记录 2. 按操作级别使用不同颜色标识 3. 支持按操作级别、操作结果、模块名称筛选 4. 支持按操作内容搜索 5. 支持按时间范围筛选 6. 支持分页查看 ## 操作级别颜色说明 - **查看 (view)**: 蓝色 - **更新 (update)**: 橙色 - **新增 (new)**: 绿色 - **删除 (delete)**: 红色 - **下载 (download)**: 紫色 - **登录 (login)**: 青色 - **登出 (logout)**: 灰色 - **其他 (other)**: 棕色 ## 注意事项 1. 操作日志记录失败不会影响主要业务逻辑 2. 操作日志只读,不能通过API创建、更新或删除 3. 建议在关键操作的视图函数中添加日志记录 4. 操作级别应该根据实际业务需求选择合适的值 5. 建议为每个模块设置统一的 `module_name` 以便后续筛选和统计