配置项作用 #
logger.level 配置项用于控制Easysearch 系统中所有日志记录器的默认日志级别。
当没有为特定日志记录器设置级别时,所有日志将使用这个默认级别。此配置影响日志系统的基础日志级别,决定哪些级别的日志信息会被输出。
配置项属性 #
- 配置路径:
logger.level - 数据类型:
Level(Log4j2 日志级别枚举) - 默认值:
INFO - 可选值:
TRACE,DEBUG,INFO,WARN,ERROR,FATAL,OFF - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 否(需要重启节点生效)
配置项详解 #
工作机制 #
日志级别层次
FATAL (最高)
↓
ERROR
↓
WARN
↓
INFO ← 默认级别
↓
DEBUG
↓
TRACE (最低)
日志输出规则:
├── 只输出 >= 设置级别的日志
├── 低级别日志被过滤
└── 高级别日志总是输出
示例: logger.level = INFO
输出:
├── FATAL 日志 ✅
├── ERROR 日志 ✅
├── WARN 日志 ✅
├── INFO 日志 ✅
├── DEBUG 日志 ❌ (被过滤)
└── TRACE 日志 ❌ (被过滤)
日志继承机制 #
日志记录器层次
Root Logger (logger.level = INFO)
│
├── org.easysearch (继承 INFO)
│ │
│ ├── transport (继承 INFO)
│ │ └── TransportService.logger → 输出 INFO+
│ │
│ └── index (继承 INFO)
│ └── IndexService.logger → 输出 INFO+
│
└── 其他包 (继承 INFO)
特定配置覆盖:
logger.level: INFO
logger.org.easysearch.transport.level: DEBUG
效果:
Root Logger → 输出 INFO+
org.easysearch.transport → 输出 DEBUG+ ✅
其他包 → 输出 INFO+
配置加载流程 #
日志配置初始化
1. 读取 easysearch.yml
│
↓
2. 解析 logger.level
│
↓
3. 应用到 Root Logger
│
↓
4. 加载特定 logger 配置
│
↓
5. 初始化 Log4j2
│
↓
6. 日志系统就绪
代码流程:
LogConfigurator.configureLoggerLevels()
│
├── 读取 logger.level
│
├── Loggers.setLevel(RootLogger, level)
│
└── 读取特定 logger.*.level
│
└── Loggers.setLevel(特定Logger, level)
配置建议 #
生产环境(推荐) #
logger.level: INFO # 默认值
建议: 保持 INFO 级别。平衡日志详细程度和性能。
生产环境(精简) #
logger.level: WARN # 仅警告和错误
建议: 设置为 WARN。减少日志量,降低磁盘 I/O。
开发/调试环境 #
logger.level: DEBUG # 调试信息
建议: 设置为 DEBUG。开发或排查问题时使用。
故障排查 #
logger.level: TRACE # 最详细的日志
建议: 设置为 TRACE。临时排查问题时使用。
禁用日志 #
logger.level: OFF # 关闭日志
建议: 慎用。仅在特殊场景下使用。
代码示例 #
easysearch.yml 基础配置 #
logger.level: INFO
生产环境配置 #
logger.level: WARN
开发环境配置 #
logger.level: DEBUG
特定模块调试 #
# 全局级别
logger.level: INFO
# 特定模块调试级别
logger.org.easysearch.transport.level: DEBUG
logger.org.easysearch.index.level: DEBUG
logger.org.easysearch.cluster.level: TRACE
通过系统属性设置 #
# 启动时通过系统属性设置
./bin/easysearch -Des.logger.level=DEBUG
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
logger.level | 全局日志级别 | INFO |
logger.*.level | 特定模块日志级别 | 继承全局 |
日志级别说明 #
| 级别 | 描述 | 使用场景 |
|---|---|---|
| FATAL | 致命错误,可能导致系统终止 | 系统崩溃、无法恢复的错误 |
| ERROR | 错误,但系统可以继续运行 | 异常、错误操作 |
| WARN | 警告,潜在问题 | 弃用警告、配置问题 |
| INFO | 信息,正常运行消息 | 启动、关闭、状态变化 |
| DEBUG | 调试信息,详细的运行细节 | 开发、调试 |
| TRACE | 追踪信息,最详细的日志 | 深度调试、性能分析 |
| OFF | 关闭日志输出 | 特殊场景 |
日志量对比 #
假设系统运行 1 小时
FATAL: ~0 条
ERROR: ~10 条
WARN: ~100 条
INFO: ~10000 条
DEBUG: ~100000 条
TRACE: ~1000000 条
不同级别的日志量:
INFO: 10 MB
WARN: 100 KB
ERROR: 10 KB
FATAL: ~0 KB
DEBUG: 100 MB
INFO: 10 MB
WARN: 100 KB
ERROR: 10 KB
TRACE: 1000 MB
DEBUG: 100 MB
INFO: 10 MB
WARN: 100 KB
性能影响分析 #
| logger.level 设置 | 优点 | 缺点 |
|---|---|---|
| OFF | 最高性能 | 无日志可查 |
| WARN | 低日志量 | 调试困难 |
| INFO(默认) | 平衡性能和可调试性 | 标准设置 |
| DEBUG | 易于调试 | 日志量大,性能影响 |
| TRACE | 最详细 | 严重的性能影响 |
性能影响对比 #
日志性能开销估算
INFO:
├── 日志量: 适中
├── 磁盘 I/O: 适中
├── CPU 开销: 适中
└── 性能影响: ~5% ✅
DEBUG:
├── 日志量: 大
├── 磁盘 I/O: 高
├── CPU 开销: 高
└── 性能影响: ~15-20%
TRACE:
├── 日志量: 很大
├── 磁盘 I/O: 很高
├── CPU 开销: 很高
└── 性能影响: ~30-50% ❌
使用场景 #
推荐使用 INFO 的场景 #
- 生产环境: 正常的生产运行
- 平衡需求: 平衡日志量和性能
- 标准监控: 需要基本的系统可见性
推荐使用 WARN 的场景 #
- 高性能: 需要最小化日志开销
- 高并发: 高并发场景减少 I/O
- 磁盘受限: 磁盘空间有限
推荐使用 DEBUG 的场景 #
- 开发环境: 开发和测试阶段
- 问题排查: 排查具体问题
- 性能分析: 分析系统性能
推荐使用 TRACE 的场景 #
- 深度调试: 需要最详细的日志
- 问题追踪: 追踪复杂问题
- 短期使用: 临时开启,用完即关
特定模块配置 #
为特定模块设置不同级别
全局配置:
logger.level: INFO
传输层调试:
logger.org.easysearch.transport.level: DEBUG
logger.org.easysearch.transport.netty.level: TRACE
索引层调试:
logger.org.easysearch.index.level: DEBUG
logger.org.easysearch.index.shard.level: TRACE
集群调试:
logger.org.easysearch.cluster.level: DEBUG
logger.org.easysearch.discovery.level: TRACE
效果:
├── 大部分模块: INFO
├── 传输层: DEBUG/TRACE
├── 索引层: DEBUG/TRACE
└── 集群: DEBUG/TRACE
日志文件管理 #
日志文件轮转策略
log4j2.properties 配置:
appender.rolling.strategy.type = SizeBasedTriggeringPolicy
appender.rolling.strategy.size = 1GB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 10
结合 logger.level 使用:
INFO:
├── 日志量: 10 MB/小时
├── 单文件: ~1 GB / 100 小时
└── 可保留: ~10 天 ✅
DEBUG:
├── 日志量: 100 MB/小时
├── 单文件: ~1 GB / 10 小时
└── 可保留: ~1 天 ⚠️
TRACE:
├── 日志量: 1000 MB/小时
├── 单文件: ~1 GB / 1 小时
└── 可保留: ~10 小时 ❌
注意事项 #
默认值: 默认值为
INFO,适用于大多数场景。需要重启: 修改此配置需要重启节点。
性能影响: 日志级别越低,性能影响越大。
磁盘空间: 低级别日志会产生大量日志文件。
特定模块: 可以为特定模块设置不同的日志级别。
临时使用: DEBUG 和 TRACE 应该临时使用。
监控建议: 监控日志文件大小和磁盘使用。
日志轮转: 配合日志轮转策略使用。
敏感信息: 注意日志中可能包含敏感信息。
测试验证: 生产环境变更前应先在测试环境验证。





