一、生鲜软件日志记录设计
1. 日志分类与级别
- 业务日志:记录订单、库存、支付等核心业务流程
- 级别:INFO/DEBUG
- 内容:订单ID、用户ID、操作类型、关键数据变更
- 系统日志:记录系统运行状态和异常
- 级别:WARN/ERROR
- 内容:错误码、异常堆栈、上下文信息
- 性能日志:记录关键操作耗时
- 级别:INFO
- 内容:接口响应时间、数据库查询时间
2. 日志格式规范
```json
{
"timestamp": "2023-11-15T14:30:45.123Z",
"level": "INFO",
"service": "order-service",
"traceId": "abc123",
"spanId": "def456",
"message": "订单创建成功",
"data": {
"orderId": "ORD20231115001",
"userId": "USR1001",
"amount": 128.50
}
}
```
3. 关键业务日志点
- 订单生命周期:创建、支付、发货、完成、取消
- 库存变更:扣减、回滚、预警
- 支付流程:请求、回调、对账
- 用户操作:登录、修改信息、地址变更
二、万象源码部署优化
1. 部署架构建议
```
[客户端] → [负载均衡] → [微服务集群]
├─ 订单服务
├─ 库存服务
├─ 支付服务
└─ 用户服务
[分布式存储] ← [消息队列] ← [日志收集]
```
2. 日志收集方案
- ELK Stack:Elasticsearch + Logstash + Kibana
- Loki+Grafana:轻量级日志聚合方案
- Fluentd:统一日志收集器
3. 部署配置要点
```yaml
docker-compose.yml 示例
version: 3
services:
order-service:
image:万象源码/order-service:latest
environment:
- LOG_LEVEL=INFO
- LOG_FORMAT=json
- ELK_HOST=logstash:5044
volumes:
- ./logs:/var/log/app
depends_on:
- redis
- mysql
```
三、问题排查流程
1. 常见问题定位
1. 订单异常:
- 检查`order-service`的ERROR日志
- 跟踪`traceId`查看完整调用链
- 验证库存服务是否扣减成功
2. 支付失败:
- 检查支付网关回调日志
- 核对支付对账文件
- 查看消息队列积压情况
3. 性能问题:
- 分析慢查询日志
- 检查接口响应时间分布
- 监控JVM/GC情况
2. 高级排查工具
- Arthas:Java诊断工具
```bash
跟踪方法调用
trace com.example.OrderService createOrder
查看堆栈
stack com.example.InventoryService deduct
```
- JProfiler:性能分析
- SkyWalking:分布式追踪
3. 日志分析技巧
```sql
-- Elasticsearch查询示例
GET /app-logs/_search
{
"query": {
"bool": {
"must": [
{ "term": { "service": "order-service" }},
{ "range": { "@timestamp": { "gte": "now-1h" }}},
{ "term": { "level": "ERROR" }}
]
}
},
"sort": [ { "@timestamp": { "order": "desc" }} ]
}
```
四、最佳实践建议
1. 日志轮转策略:
- 按大小/时间分割
- 保留最近30天日志
- 压缩归档旧日志
2. 敏感信息处理:
- 脱敏用户手机号、地址
- 加密支付相关信息
- 过滤日志中的密码字段
3. 监控告警:
- 关键错误率阈值告警
- 重要业务指标监控
- 日志增长异常检测
4. 部署优化:
- 使用容器化部署(Docker/K8s)
- 配置健康检查端点
- 实现蓝绿部署/金丝雀发布
通过完善的日志体系和合理的源码部署方案,可以显著提升生鲜电商系统的可观测性和问题排查效率,保障系统稳定运行。