9.5 KiB
9.5 KiB
🚀 西部数据日志系统使用指南
概述
西部数据服务现在集成了完整的日志记录系统,支持请求、响应、错误和性能四种类型的日志记录,每种类型都有独立的日志文件。
📝 日志记录范围
✅ 会记录日志的操作
CallAPI()- 调用西部数据APIG05HZ01CallAPI()- 调用G05HZ01 API
❌ 不会记录日志的操作
Encrypt()- 内部加密方法Md5Encrypt()- 内部MD5加密方法
说明: 加密解密是内部工具方法,调用频率高且不涉及外部API,因此不记录日志以提高性能。日志系统专注于记录外部API调用的完整生命周期。
✨ 核心特性
1. 四种日志类型
- 请求日志: 记录所有API请求的详细信息
- 响应日志: 记录所有API响应的详细信息
- 错误日志: 记录所有错误和异常情况
- 性能日志: 记录请求耗时和性能指标
2. 日志文件分离
logs/
├── westdex/
│ ├── 2024-01-01/
│ │ ├── request.log # 请求日志
│ │ ├── response.log # 响应日志
│ │ ├── error.log # 错误日志
│ │ └── performance.log # 性能日志
│ └── 2024-01-02/
│ ├── request.log
│ ├── response.log
│ ├── error.log
│ └── performance.log
3. 请求追踪
- 每个请求都有唯一的请求ID
- 请求和响应日志通过请求ID关联
- 支持完整的请求链路追踪
4. 性能监控
- 记录每个API调用的耗时
- 区分成功和失败的请求
- 提供性能分析数据
🏗️ 配置说明
配置文件设置
在 config.yaml 中添加西部数据日志配置:
westdex:
url: "https://apimaster.westdex.com.cn/api/invoke"
key: "your-key"
secret_id: "your-secret-id"
secret_second_id: "your-secret-second-id"
# 西部数据日志配置
logging:
enabled: true # 启用日志记录
log_dir: "logs/westdex" # 日志目录
use_daily: true # 按日分包
enable_level_separation: true # 启用级别分离
# 各级别配置
level_configs:
request:
max_size: 100 # 100MB
max_backups: 5 # 5个备份
max_age: 30 # 30天
compress: true # 启用压缩
response:
max_size: 100
max_backups: 5
max_age: 30
compress: true
error:
max_size: 200 # 错误日志文件更大
max_backups: 10 # 更多备份
max_age: 90 # 保留更久
compress: true
performance:
max_size: 100
max_backups: 5
max_age: 30
compress: true
🚀 使用方法
1. 使用配置创建服务
package main
import (
"tyapi-server/internal/config"
"tyapi-server/internal/infrastructure/external/westdex"
)
func main() {
// 加载配置
cfg := &config.Config{
// ... 配置内容
}
// 使用配置创建西部数据服务
service, err := westdex.NewWestDexServiceWithConfig(cfg)
if err != nil {
panic(err)
}
// 使用服务
resp, err := service.CallAPI("G05HZ01", map[string]interface{}{
"param1": "value1",
"param2": "value2",
})
if err != nil {
// 错误会自动记录到错误日志
log.Printf("API调用失败: %v", err)
return
}
// 成功响应会自动记录到响应日志
log.Printf("API调用成功: %s", string(resp))
}
2. 使用自定义日志配置
// 创建自定义日志配置
loggingConfig := westdex.WestDexLoggingConfig{
Enabled: true,
LogDir: "logs/custom_westdex",
UseDaily: true,
EnableLevelSeparation: true,
LevelConfigs: map[string]westdex.WestDexLevelFileConfig{
"request": {
MaxSize: 50,
MaxBackups: 3,
MaxAge: 7,
Compress: true,
},
"error": {
MaxSize: 100,
MaxBackups: 5,
MaxAge: 30,
Compress: true,
},
},
}
// 使用自定义配置创建服务
service, err := westdex.NewWestDexServiceWithLogging(
"https://api.example.com",
"your-key",
"your-secret-id",
"your-secret-second-id",
loggingConfig,
)
📊 日志示例
请求日志示例
{
"level": "info",
"msg": "西部数据API请求",
"request_id": "westdex_a1b2c3d4",
"api_code": "G05HZ01",
"url": "https://apimaster.westdex.com.cn/api/invoke/449159/G05HZ01?timestamp=1704096000000",
"request_data": {
"param1": "value1",
"param2": "value2"
},
"timestamp": "2024-01-01T12:00:00Z"
}
响应日志示例
{
"level": "info",
"msg": "西部数据API响应",
"request_id": "westdex_a1b2c3d4",
"api_code": "G05HZ01",
"status_code": 200,
"response_data": "{\"code\":\"0000\",\"data\":\"...\",\"message\":\"success\"}",
"duration": "150ms",
"timestamp": "2024-01-01T12:00:01Z"
}
错误日志示例
{
"level": "error",
"msg": "西部数据API错误",
"request_id": "westdex_a1b2c3d4",
"api_code": "G05HZ01",
"error": "数据源异常: 查询失败",
"request_data": {
"param1": "value1",
"param2": "value2"
},
"timestamp": "2024-01-01T12:00:01Z"
}
性能日志示例
{
"level": "info",
"msg": "西部数据API性能",
"request_id": "westdex_a1b2c3d4",
"api_code": "G05HZ01",
"duration": "150ms",
"success": true,
"timestamp": "2024-01-01T12:00:01Z"
}
🔍 日志字段说明
通用字段
| 字段 | 类型 | 说明 |
|---|---|---|
request_id |
string | 请求唯一标识符 |
api_code |
string | API代码 |
timestamp |
string | 时间戳(ISO8601格式) |
请求日志字段
| 字段 | 类型 | 说明 |
|---|---|---|
url |
string | 完整的请求URL |
request_data |
object | 请求数据 |
响应日志字段
| 字段 | 类型 | 说明 |
|---|---|---|
status_code |
int | HTTP状态码 |
response_data |
string | 响应数据(JSON字符串) |
duration |
duration | 请求耗时 |
错误日志字段
| 字段 | 类型 | 说明 |
|---|---|---|
error |
error | 错误信息 |
request_data |
object | 原始请求数据 |
性能日志字段
| 字段 | 类型 | 说明 |
|---|---|---|
duration |
duration | 请求耗时 |
success |
bool | 是否成功 |
🎯 最佳实践
1. 日志配置优化
# 生产环境配置
logging:
enabled: true
log_dir: "/var/log/westdex"
use_daily: true
enable_level_separation: true
level_configs:
request:
max_size: 200 # 更大的文件大小
max_backups: 10 # 更多备份
max_age: 90 # 保留更久
error:
max_size: 500 # 错误日志文件更大
max_backups: 20 # 更多备份
max_age: 180 # 保留更久
2. 日志分析
# 查看请求日志
tail -f logs/westdex/2024-01-01/request.log
# 查看错误日志
tail -f logs/westdex/2024-01-01/error.log
# 查看性能日志
tail -f logs/westdex/2024-01-01/performance.log
# 统计API调用次数
grep -c "G05HZ01" logs/westdex/2024-01-01/request.log
# 统计错误率
grep -c "error" logs/westdex/2024-01-01/error.log
3. 性能监控
# 查看平均响应时间
grep "duration" logs/westdex/2024-01-01/performance.log | \
awk -F'"duration":"' '{print $2}' | \
awk -F'"' '{print $1}' | \
awk -F'ms' '{sum+=$1; count++} END {print "平均响应时间: " sum/count "ms"}'
# 查看成功率
total=$(grep -c "success" logs/westdex/2024-01-01/performance.log)
success=$(grep -c '"success":true' logs/westdex/2024-01-01/performance.log)
echo "成功率: $((success * 100 / total))%"
🚨 注意事项
1. 日志文件管理
- 定期清理旧日志文件
- 监控磁盘空间使用
- 配置合适的日志轮转策略
2. 敏感信息处理
- 日志中可能包含敏感数据
- 确保日志文件访问权限
- 考虑日志脱敏需求
3. 性能影响
- 日志记录会增加少量性能开销
- 异步日志记录可减少性能影响
- 合理配置日志级别
🔧 故障排除
1. 日志文件未创建
- 检查日志目录权限
- 确认日志配置已启用
- 验证文件路径配置
2. 日志记录不完整
- 检查日志器是否正确初始化
- 确认请求ID生成逻辑
- 验证错误处理流程
3. 性能问题
- 检查日志文件大小和数量
- 确认日志轮转配置
- 监控磁盘I/O性能
🎉 总结
西部数据日志系统提供了完整的API调用追踪能力:
- 请求追踪: 通过唯一请求ID关联请求和响应
- 错误监控: 记录所有错误和异常情况
- 性能分析: 提供详细的性能指标
- 文件管理: 支持按日期分包和级别分离
- 配置灵活: 支持自定义日志配置
通过合理使用这个日志系统,您可以:
- 快速定位API调用问题
- 监控系统性能和稳定性
- 分析API使用模式和趋势
- 提高问题排查效率
现在您的西部数据服务已经具备了完整的日志记录能力!🚀