flower_bs 1b036572b8 操作记录 1 month ago
..
migrations 63dd8be966 操作历史 1 month ago
README.md 1b036572b8 操作记录 1 month ago
__init__.py 63dd8be966 操作历史 1 month ago
admin.py 63dd8be966 操作历史 1 month ago
apps.py 63dd8be966 操作历史 1 month ago
filter.py 1b036572b8 操作记录 1 month ago
models.py 63dd8be966 操作历史 1 month ago
serializers.py 1b036572b8 操作记录 1 month ago
tests.py 63dd8be966 操作历史 1 month ago
urls.py 1b036572b8 操作记录 1 month ago
views.py 1b036572b8 操作记录 1 month ago

README.md

操作日志模块使用说明

概述

操作日志模块用于记录系统中的用户敏感操作,支持按操作级别进行分类,并提供前端界面查看操作历史。

功能特性

  1. 操作级别分类

    • view: 查看操作(蓝色)
    • update: 更新操作(橙色)
    • new: 新增操作(绿色)
    • delete: 删除操作(红色)
    • download: 下载操作(紫色)
    • login: 登录操作(青色)
    • logout: 登出操作(灰色)
    • other: 其他操作(棕色)
  2. 操作结果记录

    • success: 成功
    • failure: 失败
  3. 详细信息记录

    • 操作者信息
    • IP地址
    • 请求方法和路径
    • 模块名称
    • 操作对象ID

使用方法

在视图函数中记录操作日志

1. 导入日志记录函数

from operation_log.views import log_operation, log_success_operation, log_failure_operation

2. 记录成功操作

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. 记录更新操作

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. 记录删除操作

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. 记录失败操作

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. 记录查看操作

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. 记录下载操作

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 以便后续筛选和统计