💡
原文中文,约9800字,阅读约需24分钟。
📝
内容提要
介绍了 DolphinScheduler 日志系统的实现,包括模块日志和任务日志,使用了 MDC、Discriminator、Filter、Marker 等特性,任务日志输出到单独的文件,线程名和 logger 名的设置非常重要,同时也实现了 logHandle 方法用于输出其他类日志。
🎯
关键要点
- 日志的作用在于分析异常场景,提前添加日志和Metrics信息。
- 任务调度系统需要打印不同任务的日志,模块日志和任务日志互不影响。
- 模块日志通过唯一id串联模块内部和系统整体的处理流程。
- Mapped Diagnostic Context (MDC) 支持指定日志的上下文,便于多线程环境下的日志管理。
- 任务执行前设置MDC,执行后移除,以便于日志的追踪。
- 任务日志输出任务级别的信息,每个任务写入单独的日志文件。
- SiftingAppender用于分发日志,将日志事件分发到不同的Appender。
- Marker用于过滤日志和触发特定行为,如发送邮件或结束Appender。
- DolphinScheduler的日志配置使用了SiftingAppender、TaskLogFilter和TaskLogDiscriminator。
- TaskLogFilter根据日志事件决定输出哪些日志,TaskLogDiscriminator用于确定日志文件名。
- 任务日志路径和logger名的设置非常重要,以确保日志的可检索性。
- 实现logHandle方法用于输出其他类日志,解决日志输出位置变化带来的可读性问题。
➡️