[TOC] # log-spring-boot-starter log-spring-boot-starter 通过autoconfig微内核的形式深入定制logback功能完成平台平台的日志能力。 ## Logback介绍 Logback是由log4j创始人设计的又一个开源日记组件,Logback是SpringBoot内置的日志处理框架,spring-boot-starter其中包含了spring-boot-starter-logging,该依赖内容就是 Spring Boot 默认的日志框。 ![](https://img.kancloud.cn/6e/a4/6ea4e5049c200352762ad532b4f77cc3_1586x1125.png) ## logback取代log4j的理由: * 更快的实现:Logback的内核重写了,在一些关键执行路径上性能提升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。 * 非常充分的测试:Logback经过了几年,数不清小时的测试。Logback的测试完全不同级别的。 * Logback-classic非常自然实现了SLF4j:Logback-classic实现了SLF4j。在使用SLF4j中,你都感觉不到logback-classic。而且因为logback-classic非常自然地实现了slf4j ,所以切换到log4j或者其他,非常容易,只需要提供成另一个jar包就OK,根本不需要去动那些通过SLF4JAPI实现的代码。 * 非常充分的文档官方网站有两百多页的文档。 ## 统一日志标准组件 平台统一定义了logback-spring.xml文件,通过此问题可以解决平台级日志的共性问题 * 统一日志格式 ![](https://img.kancloud.cn/89/71/897128d9c2c3d36e4fffd5e7d8d88ff1_2521x747.png) * 启动服务日志格式 ![](https://img.kancloud.cn/df/71/df71bc4480feb7d3f1912c16fb5f7e31_2546x1208.png) * 定义业务log通用json格式 ![](https://img.kancloud.cn/53/0d/530d81405d64ad5e41dcc98aa8a9e5d9_1931x803.png) * 网关自定义请求日志json格式标准输出 ![](https://img.kancloud.cn/80/f2/80f2954872b4ce701ba1a1d0df2f62aa_2541x1184.png) ## traceId生成工具类 ![](https://img.kancloud.cn/2c/66/2c66ec73cb6b107db441b9834484f0d4_2098x1125.png) ## 服务日志模块隔离 * 鉴别器实现根据tag打印日志服务 ![](https://img.kancloud.cn/1a/bd/1abd5446b3d5ebcab15ff345d4f3ca83_2407x692.png) * mdc 设置tag实现打印日志 ![](https://img.kancloud.cn/1a/94/1a94a9624283a93f463a59e45409b535_2473x899.png) * 配置sql等不同模块日志的日志枚举 ![](https://img.kancloud.cn/09/0d/090de7a57e4590f9933fb24fca7fe6bd_2305x721.png) * 代码生成模块打印sql日志 ![](https://img.kancloud.cn/e8/14/e81478b5fb5df67d3473554a206fc97b_2521x489.png) * 网关打印请求日志 ![](https://img.kancloud.cn/dd/3b/dd3bdaa8c3cd1633a03f26d0c23188dd_2548x814.png) ## 日志滚动附加器 * 日志需要按时间进行归档,配置如下 ![](https://img.kancloud.cn/67/6d/676d48d64eac256c9a04611c2f137f12_2452x989.png) * 归档效果 ![](https://img.kancloud.cn/82/d8/82d8c6a7b8136630c43b75cb1d40a3f4_2463x897.png) ## 审计日志 基于消息驱动条件装配的spring cloud stream kafka处理审计日志 ![](https://img.kancloud.cn/77/c9/77c9bba55d1dca54872327f13c7b5fa3_1060x447.png) ## 基于SpEL表达式解析定义审计日志格式 ~~~ @AuditLog(operation = " #sysUser.username + '查看了用户列表'") ~~~ ## kafka审计日志生产者 ![](https://img.kancloud.cn/b2/af/b2af93ebd799d77d708a3ccae9621893_2448x1160.png) ## kafka审计日志消费者 ![](https://img.kancloud.cn/03/07/0307dccdf22e8d8a03704a375d9687f7_2544x1221.png) ## 配置开启消息驱动审计日志 ``` ocp.audit-log.enabled=true ocp.audit-log.log-type=kafka ocp.security.xss.enable=true ##### kafka spring.cloud.stream.kafka.binder.brokers[0]=192.168.11.203:9092 spring.cloud.stream.kafka.binder.auto-create-topics=true spring.cloud.stream.kafka.binder.min-partition-count=3 spring.cloud.stream.bindings.output.destination=auditlog spring.cloud.stream.bindings.output.group=auditlog-group spring.cloud.stream.bindings.output.content-type=application/json spring.cloud.stream.bindings.input.consumer.max-attempts=3 spring.cloud.stream.bindings.input.destination=auditlog spring.cloud.stream.bindings.input.content-type=application/json spring.cloud.stream.bindings.input.group=auditlog-group ```