Appearance
日志管理
概述
日志管理是系统中用于记录和管理各类操作日志的核心模块。通过该模块,管理员可以查看、搜索和导出系统的操作日志,确保系统的安全性和合规性。日志管理模块增强了系统的透明度和可追溯性,使得管理员能够及时发现并处理潜在的安全问题和异常行为。
主要功能
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-input和n-button组件实现模糊查询。 - 提供批量操作按钮,使用
n-popconfirm组件实现批量删除日志的确认框。 - 提供导出按钮,调用后端 API 导出日志数据为 Excel 文件。
- 使用 Naive UI 的
2. 日志详情页
- 组件:
LogDetail.vue - 功能:
- 使用 Naive UI 的
n-card组件展示日志的详细信息。 - 展示字段包括操作时间、操作用户、操作类型、操作结果、IP地址、详细信息。
- 提供返回按钮,返回到日志列表页。
- 使用 Naive UI 的
3. 日志分类管理页
- 组件:
LogCategory.vue - 功能:
- 使用 Naive UI 的
n-form和n-form-item组件构建日志分类信息表单。 - 表单字段包括分类名称、描述、状态。
- 使用
n-switch组件切换日志分类状态(启用/禁用)。 - 提交表单时,调用后端 API 进行日志分类信息的添加或编辑操作。
- 使用 Naive UI 的
4. 日志统计分析页
- 组件:
LogAnalysis.vue - 功能:
- 使用 Naive UI 的图表组件(如
n-chart)展示日志的统计分析结果。 - 提供多种统计维度,如操作频率、操作成功率、活跃用户、时间段分布等。
- 支持导出统计结果为图片或 PDF 文件。
- 使用 Naive UI 的图表组件(如
5. 异常日志告警配置页
- 组件:
AlertConfig.vue - 功能:
- 使用 Naive UI 的
n-form和n-form-item组件构建告警配置表单。 - 表单字段包括告警方式(邮件、短信、系统通知)、告警条件(如多次登录失败、权限违规操作等)。
- 提交表单时,调用后端 API 进行告警配置的保存。
- 使用 Naive UI 的
接口列表
1. 获取日志列表
- URL:
/api/logs - 方法:
GET
请求参数
| 参数名 | 类型 | 是否必填 | 默认值 | 描述 |
|---|---|---|---|---|
page | int | 否 | 1 | 当前页码 |
pageSize | int | 否 | 10 | 每页显示条数 |
search | string | 否 | 搜索关键字(操作时间、操作用户、操作类型等) | |
startTime | string | 否 | 查询开始时间(格式:YYYY-MM-DD HH:mm:ss) | |
endTime | string | 否 | 查询结束时间(格式: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。
- 使用 ISO 8601 标准格式,例如
总结
日志管理模块是系统中不可或缺的一部分,它不仅提供了对操作日志的全面管理,还确保了系统的安全性和合规性。通过合理的日志记录、分类管理和统计分析,管理员可以有效地监控系统运行状况,及时发现并处理潜在的安全问题和异常行为,保障系统的稳定运行和用户体验。如果有其他问题或需要进一步的帮助,请随时联系技术支持团队。