跳到主要内容

# 日志相关

盘古开发框架使用 Spring Boot 的 logback 作为缺省的日志框架实现。但我们对日志做了如下一些增强功能。

## 分布式日志追踪​

基于微服务架构的应用，因为业务链路贯穿着很多微服务节点，导致定位某个请求的日志以及上下游业务的日志会变得非常困难。为了解决这一痛点， 业界也有诸多成熟方案。如 SkyWalking，Pinpoint 等，但其运维成本和数据存储成本均不可小觑。如果有相应的资源去做那它们自然是不二之选。 但如果你资源有限，那么这里给出一个非常轻量的通过集成 TLog 来解决日志追踪问题的方案。

什么是 TLog ?

TLog提供了一种最简单的方式来解决日志追踪问题，它不收集日志，也不需要另外的存储空间，它只是自动的对你的日志进行打标签，自动生成TraceId贯穿你微服务的一整条链路。并且提供上下游节点信息。

### 如何使用​

TLog 已经作为一个标准缺省组件集成进了 `pangu-spring-boot-starter` 盘古基础模块。使用的时候只需要再启动类中加入如下静态代码块就可以。

    static {
        AspectLogEnhance.enhance();
    }

### 实际日志输出效果​

我们在一个 Dubbo 服务消费者和一个 Dubbo 服务生产者应用中分别做如上配置后，就可以在每个调用链的日志里看到 TLog 自定嵌入的 TraceId 标签值 `10812814178142336`。如下所示。

    消费端：
    2022-06-23 14:40:50 INFO 47050 - [nio-8080-exec-1] c.x.DemoController : < 0 >< 10812814178142336 > call case1...
    生产端：
    2022-06-23 14:40:50 INFO 46395 - [:20881-thread-4] c.x.UserServiceImpl : < 0.1 >< 10812814178142336 > 参数userIn：UserInDto(name=null, userType=1)

如果是 HTTP 调用，则 TraceId 标签值 `10812814178142336` 会写入到 HTTP 请求的响应标题中。如下所示。

    tlogTraceId: 10812814178142336

> 以上 DEMO 案例代码可在如下范例中找到。

> - pangu-examples-dubbo-service
> - pangu-examples-webapi-dubbo-service-based

## 日志级别热切换​

为了增强日志输出的可观测性，盘古基础模块实现了基于配置中心的日志级别热切换能力。只需要在配置中心修改或新增日志级别配置，则对应的日志输出级别即刻实时生效。

    #配置中心配置日志
    logging.level.root=INFO
    logging.level.com.gitee.pulanos.pangu=INFO

## 下一步​

继续阅读其它章节获取你想要的答案或通过我们的 开发者社区 寻求更多帮助。