Files
z-docs/docs/tutorial-extras/zhub-log.md

279 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebar_position: 11
title: 日志管理
description: ZHub 日志配置、格式分析、故障排查和监控指南
keywords: [ZHub日志, 日志管理, 日志分析, 故障排查, 监控]
---
# 日志管理
ZHub 日志文件配置、分析和故障排查指南。
## 目录
- [日志配置](#日志配置)
- [日志文件位置](#日志文件位置)
- [服务端日志](#日志内容分析)
- [Java客户端日志](#java-客户端日志)
- [日志分析](#日志分析)
- [日志轮转](#日志轮转)
- [故障排查](#故障排查)
## 日志配置
### 基础配置
**app.ini 配置**
```ini
[log]
level=info # 日志级别: debug, info, error
handlers=console # 日志处理器: console, file
file=zhub.log # 日志文件名
```
### 日志级别说明
| 级别 | 说明 | 使用场景 |
|------|------|----------|
| debug | 调试信息 | 开发调试,包含详细的执行流程 |
| info | 一般信息 | 生产环境,记录重要操作 |
| error | 错误信息 | 严重错误,需要关注 |
## 日志文件位置
### 默认位置
```bash
# 当前目录下的日志文件
./zhub.log
```
### 自定义位置
```ini
# app.ini 中指定日志目录
[log]
file=/var/log/zhub/zhub.log
```
## 日志内容分析
### 连接接入日志
**连接建立**
```
2024/01/15 10:30:15.123456 zbus.go:291: [Info] conn start: 127.0.0.1:12345 [1]
```
- 格式:`[Info] conn start: IP:端口 [连接序号]`
- 连接序号:每个新连接递增的数字标识
**连接断开**
```
2024/01/15 10:30:20.123456 zbus.go:302: [Info] conn closed: 127.0.0.1:12345 [ 1 ]
```
- 格式:`[Info] conn closed: IP:端口 [ 连接序号 ]`
- 包含正常断开和异常断开
**认证过程**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:84: [Info] [1] -Auth: publish [user-login]
2024/01/15 10:30:15.123456 zbus-message-handler.go:122: [Info] [1] cmd: publish, auth [OK]
```
- `-Auth:` 表示权限不足
- `auth [OK]` 表示认证成功
### 消息收发日志
**消息发布**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:45: [1] cmd: publish user-login {"userId":"12345"}
```
- 格式:`[连接序号] cmd: publish 主题名 消息内容`debug级别
- 仅在debug级别下显示
**消息订阅**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:45: [1] cmd: subscribe user-login order-create
2024/01/15 10:30:15.123456 zbus-message-handler.go:122: [Info] [1] cmd: subscribe, auth [OK]
```
- 格式:`[连接序号] cmd: subscribe 主题列表`debug级别
- 支持多主题订阅,空格分隔
**广播消息**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:45: [1] cmd: broadcast topic-abc hello!
```
- 格式:`[连接序号] cmd: broadcast 主题名 消息内容`debug级别
**延时消息**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:45: [1] cmd: delay order-timeout 30s 订单超时
```
- 格式:`[连接序号] cmd: delay 主题名 延时时间 消息内容`debug级别
### RPC 调用日志
**RPC 调用**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:45: [1] cmd: rpc user-get-info {"ruk":"app1::12345"}
```
- 格式:`[连接序号] cmd: rpc 服务名 RPC参数`debug级别
- RPC参数包含ruk回复标识
**RPC 服务离线**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:132: [1] : rpc user-get-info no subscribe
```
- 格式:`[连接序号] : rpc 服务名 no subscribe`
- 表示没有客户端订阅该RPC服务
**RPC 权限不足**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:84: [Info] [1] -Auth: rpc [user-get-info]
```
- 格式:`[Info] [连接序号] -Auth: rpc [服务名]`
### 定时任务日志
**定时任务执行**
```
2024/01/15 10:30:00.123456 monitor.go:56: [Info] broadcast timer T:A 执行
2024/01/15 10:30:05.123456 monitor.go:56: [Info] broadcast timer T:B 执行
```
- 格式:`[Info] broadcast timer 任务名 执行`
- 来自monitor模块的定时任务执行日志
**定时任务订阅**
```
2024/01/15 10:30:15.123456 zbus-message-handler.go:45: [1] cmd: timer T:A T:B
```
- 格式:`[连接序号] cmd: timer 任务列表`debug级别
- 客户端订阅定时任务时记录
## Java 客户端日志
### 消息接收日志
**订阅消息**
```
FINEST: topic[user.login]: {"userId":"12345","username":"张三"}
```
- 格式:`FINEST: topic[主题名]: 消息内容`
- 记录接收到的订阅消息
**广播消息**
```
FINEST: topic[topic-abc]: hello!
```
- 格式:`FINEST: topic[主题名]: 消息内容`
### 定时任务日志
**任务触发**
```
FINEST: timer[T:A]:
```
- 格式:`FINEST: timer[任务名]: `
**任务执行完成**
```
FINEST: timer [T:A] : elapsed time 15 ms
```
- 格式:`FINEST: timer [任务名] : elapsed time 耗时 ms`
### RPC 调用日志
**RPC响应**
```
FINEST: rpc-back:[user.getInfo]: {"retcode":0,"result":"用户信息"}
```
- 格式:`FINEST: rpc-back:[服务名]: 响应内容`
**RPC错误**
```
WARNING: rpc-back[user.getInfo] event accept error :{"retcode":500,"result":"服务错误"}
```
- 格式:`WARNING: rpc-back[服务名] event accept error :响应内容`
### 错误日志
**超时错误**
```
SEVERE: timer [T:A] time out: 5 S
```
- 格式:`SEVERE: timer [任务名] time out: 超时时间 S`
**处理异常**
```
WARNING: topic[user.login] event accept error :{"userId":"12345"}
SEVERE: topic[user.login] event deal time out: 5 S, value: {"userId":"12345"}
```
- 格式:`WARNING: topic[主题名] event accept error :消息内容`
- 格式:`SEVERE: topic[主题名] event deal time out: 超时时间 S, value: 消息内容`
## 日志分析
### 关键日志识别
**连接状态监控**
- `conn start:` - 新连接建立
- `conn closed:` - 连接断开
- `-Auth:` - 权限认证失败
**消息处理监控**
- `cmd: publish` - 消息发布debug级别
- `cmd: subscribe` - 消息订阅
- `cmd: rpc` - RPC调用
- `no subscribe` - 服务离线
**Java客户端监控**
- `topic[主题名]:` - 消息接收
- `timer[任务名]:` - 定时任务触发
- `rpc-back:[服务名]:` - RPC响应
- `time out:` - 超时错误
- `event accept error` - 处理异常
- `event deal time out` - 处理超时
**错误信息识别**
- `-Error:` - 系统错误
- `Recovered:` - 异常恢复
- `-Auth:` - 权限不足
### 监控要点
1. **连接稳定性**:关注连接建立和断开的频率
2. **权限问题**:监控`-Auth:`日志,排查权限配置
3. **服务可用性**:关注`no subscribe`日志确保RPC服务正常
4. **系统健康**:检查`-Error:``Recovered:`日志
5. **客户端性能**:监控`time out:`日志,关注处理超时
6. **消息处理**:观察`topic[主题名]:`日志,确保消息正常接收
## 日志轮转
### 手动轮转
```bash
# 重命名当前日志文件
mv zhub.log zhub.log.$(date +%Y%m%d)
# 重启服务
./zhub.sh restart
```
## 故障排查
### 常见问题
**1. 日志文件过大**
- 定期清理旧日志文件
- 调整日志级别为info
**2. 日志级别过高**
- 生产环境建议使用info级别
- 开发环境可使用debug级别
### 最佳实践
1. **定期检查**:关注错误和权限相关日志
2. **监控连接**:观察连接建立和断开情况
3. **服务状态**确保RPC服务正常运行
4. **日志轮转**:定期清理旧日志文件
5. **级别设置**生产环境使用info级别