Skip to content

日志管理

概述

日志管理是系统中用于记录和管理各类操作日志的核心模块。通过该模块,管理员可以查看、搜索和导出系统的操作日志,确保系统的安全性和合规性。日志管理模块增强了系统的透明度和可追溯性,使得管理员能够及时发现并处理潜在的安全问题和异常行为。

主要功能

1. 日志列表展示

  • 功能描述:以表格形式展示所有操作日志的详细信息,包括操作时间、操作用户、操作类型、操作结果、IP地址等。
  • 操作按钮
    • 搜索:支持按操作时间、操作用户、操作类型等关键字进行模糊查询。
    • 批量操作:支持批量删除日志。
    • 导出:将当前页面或全部日志数据导出为 Excel 文件。

2. 日志详情查看

  • 功能描述:提供详细的日志信息展示,管理员可以点击查看每条日志的具体内容。
  • 字段说明
    • 操作时间:记录每次操作的具体时间。
    • 操作用户:记录执行操作的用户名。
    • 操作类型:记录具体操作(如登录、添加用户、编辑用户、删除用户等)。
    • 操作结果:记录操作是否成功及其相关信息。
    • IP地址:记录操作时的IP地址。
    • 详细信息:记录操作的详细内容,如参数、返回值等。

3. 日志分类管理

  • 功能描述:管理员可以对日志分类进行管理,包括添加、编辑和删除日志分类。
  • 字段说明
    • 分类名称:必填,日志分类的名称。
    • 描述:选填,简要描述日志分类的用途。
    • 状态:默认启用,可以选择是否启用该日志分类。

4. 日志清理

  • 功能描述:管理员可以定期清理不再需要的日志,以释放存储空间。为了防止误操作,清理操作会弹出确认框提示。
  • 注意事项
    • 清理后无法恢复,请谨慎操作。
    • 建议在清理前备份重要日志数据。

5. 日志统计分析

  • 功能描述:提供日志的统计分析功能,帮助管理员了解系统的运行状况和用户行为模式。
  • 统计内容
    • 操作频率:统计不同操作类型的执行次数。
    • 操作成功率:统计各操作的成功率。
    • 活跃用户:统计最活跃的操作用户。
    • 时间段分布:统计不同时间段的操作分布情况。

6. 异常日志告警

  • 功能描述:当系统检测到异常日志(如多次登录失败、权限违规操作等)时,自动触发告警通知,确保管理员能够及时处理。
  • 告警方式
    • 邮件通知:发送告警邮件给指定的管理员邮箱。
    • 短信通知:发送告警短信给指定的管理员手机号。
    • 系统通知:在系统内显示告警消息。

技术实现

数据库设计

  • 日志表 (logs)

    • id:主键,自增。
    • operation_time:操作时间。
    • user_id:外键,关联用户表。
    • operation_type:操作类型(如登录、添加用户、编辑用户等)。
    • operation_result:操作结果(0: 失败, 1: 成功)。
    • ip_address:操作时的IP地址。
    • details:操作的详细信息。
    • created_at:创建时间。
    • updated_at:更新时间。
  • 日志分类表 (log_categories)

    • id:主键,自增。
    • name:分类名称,唯一。
    • description:描述。
    • status:分类状态(0: 禁用, 1: 启用)。
    • created_at:创建时间。
    • updated_at:更新时间。

前端实现

技术栈

  • 框架:Vue.js 3.x
  • UI库:Naive UI
  • 状态管理:Pinia
  • 路由管理:Vue Router
  • API请求:Axios

页面结构

1. 日志列表页

  • 组件LogList.vue
  • 功能
    • 使用 Naive UI 的 n-data-table 组件展示日志列表。
    • 支持分页、排序和筛选功能。
    • 提供搜索栏,使用 n-inputn-button 组件实现模糊查询。
    • 提供批量操作按钮,使用 n-popconfirm 组件实现批量删除日志的确认框。
    • 提供导出按钮,调用后端 API 导出日志数据为 Excel 文件。

2. 日志详情页

  • 组件LogDetail.vue
  • 功能
    • 使用 Naive UI 的 n-card 组件展示日志的详细信息。
    • 展示字段包括操作时间、操作用户、操作类型、操作结果、IP地址、详细信息。
    • 提供返回按钮,返回到日志列表页。

3. 日志分类管理页

  • 组件LogCategory.vue
  • 功能
    • 使用 Naive UI 的 n-formn-form-item 组件构建日志分类信息表单。
    • 表单字段包括分类名称、描述、状态。
    • 使用 n-switch 组件切换日志分类状态(启用/禁用)。
    • 提交表单时,调用后端 API 进行日志分类信息的添加或编辑操作。

4. 日志统计分析页

  • 组件LogAnalysis.vue
  • 功能
    • 使用 Naive UI 的图表组件(如 n-chart)展示日志的统计分析结果。
    • 提供多种统计维度,如操作频率、操作成功率、活跃用户、时间段分布等。
    • 支持导出统计结果为图片或 PDF 文件。

5. 异常日志告警配置页

  • 组件AlertConfig.vue
  • 功能
    • 使用 Naive UI 的 n-formn-form-item 组件构建告警配置表单。
    • 表单字段包括告警方式(邮件、短信、系统通知)、告警条件(如多次登录失败、权限违规操作等)。
    • 提交表单时,调用后端 API 进行告警配置的保存。

接口列表

1. 获取日志列表

  • URL/api/logs
  • 方法GET

请求参数

参数名类型是否必填默认值描述
pageint1当前页码
pageSizeint10每页显示条数
searchstring搜索关键字(操作时间、操作用户、操作类型等)
startTimestring查询开始时间(格式:YYYY-MM-DD HH:mm:ss)
endTimestring查询结束时间(格式:YYYY-MM-DD HH:mm:ss)

成功响应

json
{
  "total": 100,
  "data": [
    {
      "id": 1,
      "operationTime": "2023-09-01T08:00:00Z",
      "userId": 1,
      "operationType": "登录",
      "operationResult": 1,
      "ipAddress": "192.168.1.1",
      "details": "用户 admin 登录系统。",
      "createdAt": "2023-09-01T08:00:00Z",
      "updatedAt": "2023-09-01T08:00:00Z"
    },
    ...
  ]
}

2. 添加日志

  • URL/api/logs
  • 方法POST
  • 请求头:
    • Content-Type: application/json

请求体

json
{
  "operationTime": "2023-09-01T08:00:00Z",
  "userId": 1,
  "operationType": "登录",
  "operationResult": 1,
  "ipAddress": "192.168.1.1",
  "details": "用户 admin 登录系统。"
}

成功响应

json
{
  "id": 101,
  "operationTime": "2023-09-01T08:00:00Z",
  "userId": 1,
  "operationType": "登录",
  "operationResult": 1,
  "ipAddress": "192.168.1.1",
  "details": "用户 admin 登录系统。",
  "createdAt": "2023-09-01T08:00:00Z",
  "updatedAt": "2023-09-01T08:00:00Z"
}

3. 删除日志

  • URL/api/logs/{id}
  • 方法DELETE
  • 路径参数
    • id:日志ID

成功响应

json
{
  "message": "删除成功"
}

4. 批量删除日志

  • URL/api/logs/batch
  • 方法POST
  • 请求头:
    • Content-Type: application/json

请求体

json
{
  "ids": [1, 2, 3]
}

成功响应

json
{
  "message": "批量删除成功"
}

5. 导出日志数据

  • URL/api/logs/export
  • 方法GET
  • 请求参数
    • startTime:查询开始时间(格式:YYYY-MM-DD HH:mm:ss)
    • endTime:查询结束时间(格式:YYYY-MM-DD HH:mm:ss)
    • operationType:操作类型(可选)

成功响应

  • 返回一个 Excel 文件流,文件名为 log_export.xlsx

6. 获取日志分类列表

  • URL/api/logCategories
  • 方法GET

成功响应

json
{
  "data": [
    {
      "id": 1,
      "name": "系统日志",
      "description": "记录系统操作日志",
      "status": 1,
      "createdAt": "2023-09-01T08:00:00Z",
      "updatedAt": "2023-09-01T08:00:00Z"
    },
    ...
  ]
}

7. 添加日志分类

  • URL/api/logCategories
  • 方法POST
  • 请求头:
    • Content-Type: application/json

请求体

json
{
  "name": "新分类",
  "description": "这是一个新的日志分类",
  "status": 1
}

成功响应

json
{
  "id": 101,
  "name": "新分类",
  "description": "这是一个新的日志分类",
  "status": 1,
  "createdAt": "2023-09-01T08:00:00Z",
  "updatedAt": "2023-09-01T08:00:00Z"
}

8. 编辑日志分类

  • URL/api/logCategories/{id}
  • 方法PUT
  • 路径参数
    • id:日志分类ID
  • 请求头:
    • Content-Type: application/json

请求体

json
{
  "name": "更新后的分类",
  "description": "这是一个更新后的日志分类",
  "status": 0
}

成功响应

json
{
  "id": 101,
  "name": "更新后的分类",
  "description": "这是一个更新后的日志分类",
  "status": 0,
  "updatedAt": "2023-09-01T08:00:00Z"
}

9. 删除日志分类

  • URL/api/logCategories/{id}
  • 方法DELETE
  • 路径参数
    • id:日志分类ID

成功响应

json
{
  "message": "删除成功"
}

10. 获取日志统计分析数据

  • URL/api/logAnalysis
  • 方法GET
  • 请求参数
    • startTime:查询开始时间(格式:YYYY-MM-DD HH:mm:ss)
    • endTime:查询结束时间(格式:YYYY-MM-DD HH:mm:ss)

成功响应

json
{
  "operationFrequency": {
    "login": 100,
    "addUser": 20,
    "editUser": 15,
    "deleteUser": 5
  },
  "operationSuccessRate": {
    "login": 95,
    "addUser": 90,
    "editUser": 85,
    "deleteUser": 95
  },
  "activeUsers": ["admin", "user1", "user2"],
  "timeDistribution": {
    "morning": 40,
    "afternoon": 30,
    "evening": 20,
    "night": 10
  }
}

11. 配置异常日志告警

  • URL/api/alertConfig
  • 方法POST
  • 请求头:
    • Content-Type: application/json

请求体

json
{
  "alertWay": "email",
  "alertCondition": "multipleLoginFailures"
}

成功响应

json
{
  "message": "告警配置保存成功"
}

附录

接口规范

  • HTTP状态码

    • 200 OK:请求成功。
    • 201 Created:资源创建成功。
    • 204 No Content:请求成功但无返回内容。
    • 400 Bad Request:客户端请求有误。
    • 404 Not Found:请求的资源不存在。
    • 409 Conflict:请求冲突,例如资源已存在。
  • 错误响应格式

    json
    {
      "error": "Error message",
      "details": ["Detail 1", "Detail 2"]
    }
  • 时间格式

    • 使用 ISO 8601 标准格式,例如 2023-01-01T00:00:00Z

总结

日志管理模块是系统中不可或缺的一部分,它不仅提供了对操作日志的全面管理,还确保了系统的安全性和合规性。通过合理的日志记录、分类管理和统计分析,管理员可以有效地监控系统运行状况,及时发现并处理潜在的安全问题和异常行为,保障系统的稳定运行和用户体验。如果有其他问题或需要进一步的帮助,请随时联系技术支持团队。