- 日志的重要性与使用场景
- 为什么需要日志框架
- 日志的五个核心作用(调试、监控、审计、统计分析、故障排查)
- 良好日志实践的标准
- 日志级别详解
- TRACE、DEBUG、INFO、WARN、ERROR、FATAL
- 级别选择策略与应用场景
- 动态调整日志级别
- 第一代:JDK自带日志
- java.util.logging (JUL) 的诞生与设计
- 优点与局限性
- 第二代:Log4j 1.x的统治时代
- Apache Log4j 1.x的设计理念
- 配置文件格式与基本使用
- 性能问题与停止维护
- 日志门面的出现
- 为什么需要门面模式
- Commons Logging (JCL) vs SLF4J
- 门面模式的优势与实现原理
- 第三代:现代日志框架
- Logback:SLF4J的官方实现
- Log4j 2.x:性能与功能的飞跃
- 异步日志的演进
- java.util.logging (JUL)
- 基础配置与Handler使用
- 自定义Formatter与Filter
- 在无依赖项目中应用
- Log4j 2.x
- 架构:API与Core分离
- 配置文件详解(XML、JSON、YAML、Properties)
- Appenders:Console、File、RollingFile、Socket、Async等
- Layouts:PatternLayout、JSONLayout、CSVLayout
- Filters:Threshold、Burst、Time等
- 异步日志:AsyncLogger与AsyncAppender
- Lookups与自定义组件
- 性能优化与监控
- Logback
- 架构与组件:Logger、Appender、Layout
- 配置文件详解:logback.xml、logback-spring.xml
- Appender:ConsoleAppender、FileAppender、RollingFileAppender
- 条件配置与变量使用
- MDC(Mapped Diagnostic Context)使用
- 性能特性与自动重载配置
- SLF4J深入
- 绑定机制与桥接器
- MDC与标记(Marker)高级使用
- 参数化日志与性能优化
- 桥接旧日志系统(jcl-over-slf4j, jul-to-slf4j, log4j-over-slf4j)
- 日志统一管理策略
- 多模块项目日志统一
- 第三方库日志接管
- 避免日志冲突与依赖地狱
- Spring Framework日志集成
- Spring的日志抽象
- 与JCL、SLF4J的集成方式
- 在Spring MVC/WebFlux中的日志实践
- Spring Boot日志配置
- 默认Logback配置与自动配置原理
- 配置文件优先级:logback-spring.xml > application.properties
- Profile-specific配置
- 彩色输出与banner日志
- Spring Boot切换日志框架
- 切换到Log4j2:排除logback,添加log4j2依赖
- 切换到JUL:配置与注意事项
- 多日志框架并存策略
- 性能优化
- 异步日志的性能影响
- 合理的日志级别设置
- 避免日志中的性能陷阱
- 结构化日志
- JSON格式日志输出
- 与ELK/EFK栈集成
- 在微服务中的结构化日志实践
- 分布式追踪
- TraceId与SpanId的传递
- 集成Sleuth/Brave
- 日志与OpenTelemetry
- 日志监控与告警
- 关键错误告警配置
- 日志量监控
- 基于日志的Metrics收集
- 单应用日志配置实战
- 开发/测试/生产环境不同配置
- 日志文件切割与归档策略
- 敏感信息过滤
- 微服务架构日志方案
- 集中式日志收集架构
- 日志规范与标准化
- 跨服务调用链追踪
- 常见问题排查
- 日志丢失问题定位
- 性能问题排查
- 配置不生效排查流程
- 新兴日志框架了解
- 云原生环境日志
- 容器环境日志最佳实践
- Kubernetes日志方案
- Serverless函数日志
- 日志即数据理念