feat: 新增日志分组,支持按业务分组输出日志到不同目录 - #1062
Open
yoranye wants to merge 2 commits into
Open
Conversation
新增按业务分组(Group)将日志输出到不同目录的功能,实现类似
`LoggerFactory.getLogger(Class, String group)` 的效果。
| 文件 | 说明 |
|------|------|
| `GroupContext.java` | 基于 ThreadLocal 的分组上下文管理 |
| `GroupRoutingFilter.java` | 自定义 TurboFilter,拦截日志并注入 MDC |
| `GroupLoggerFactory.java` | 对外工具类,封装 group 设置和 Logger 获取 |
1. 业务代码调用 `GroupLoggerFactory.getLogger(Class, "order")`
2. GroupContext 将 "order" 存入 ThreadLocal
3. GroupRoutingFilter(TurboFilter)在日志事件创建前拦截,
将 ThreadLocal 中的 group 注入 MDC(key=LOG_GROUP)
4. SiftingAppender 根据 MDC 中的 LOG_GROUP 值,
动态路由到 `logs/{group}/app.log`
在 logback.xml 中配置 SiftingAppender + TurboFilter 即可生效,
无需修改业务代码的日志打印方式。
本地编译通过,单元测试通过,日志文件按 group 正确生成到不同目录。
Signed-off-by: Yoran Ye <yoran.ye@qq.com>
新增按业务分组(Group)将日志输出到不同目录的功能,实现类似
`LoggerFactory.getLogger(Class, String group)` 的效果。
| 文件 | 说明 |
|------|------|
| `GroupContext.java` | 基于 ThreadLocal 的分组上下文管理 |
| `GroupRoutingFilter.java` | 自定义 TurboFilter,拦截日志并注入 MDC | | `GroupLoggerFactory.java` | 对外工具类,封装 group 设置和 Logger 获取 |
1. 业务代码调用 `GroupLoggerFactory.getLogger(Class, "order")`
2. GroupContext 将 "order" 存入 ThreadLocal
3. GroupRoutingFilter(TurboFilter)在日志事件创建前拦截, 将 ThreadLocal 中的 group 注入 MDC(key=LOG_GROUP)
4. SiftingAppender 根据 MDC 中的 LOG_GROUP 值, 动态路由到 `logs/{group}/app.log`
在 logback.xml 中配置 SiftingAppender + TurboFilter 即可生效, 无需修改业务代码的日志打印方式。
本地编译通过,单元测试通过,日志文件按 group 正确生成到不同目录。
Signed-off-by: Yoran Ye <yoran.ye@qq.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
功能说明
新增按业务分组(Group)将日志输出到不同目录的功能,实现类似
LoggerFactory.getLogger(Class, String group)的效果。新增文件
GroupContext.javaGroupRoutingFilter.java工作原理
GroupLoggerFactory.getLogger(Class, "order")logs/{group}/app.log配置示例
在 logback.xml 中配置 SiftingAppender + TurboFilter 即可生效, 无需修改业务代码的日志打印方式。
验证
本地编译通过,单元测试通过,日志文件按 group 正确生成到不同目录。
Signed-off-by: yoran.ye[yoran.ye@qq.com]