You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向Graylog发送层级化日志并在UI中展示层级结构?

Graylog层级化日志实现方案

你的需求完全可行,Graylog支持通过字段关联实现父子日志的层级展示,具体实现步骤如下:

1. 定义核心关联字段

在日志中添加两个关键字段,用于标识父子关系:

  • transaction_id:当前日志条目的唯一ID(建议用UUID格式)
  • parent_transaction_id:当前日志所属父日志的transaction_id

2. Java代码中传递关联字段

利用SLF4J的MDC(线程上下文映射)来存储这些字段,日志框架会自动将MDC中的键值对附加到日志消息中:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
import java.util.UUID;

public class DemoApplication {
    private static final Logger logger = LoggerFactory.getLogger(DemoApplication.class);

    public static void main(String[] args) {
        // 生成父日志ID并记录日志
        String parentTxId = UUID.randomUUID().toString();
        MDC.put("transaction_id", parentTxId);
        logger.info("start Instance");
        
        // 生成子日志ID,关联父ID并记录日志
        String childTxId = UUID.randomUUID().toString();
        MDC.put("transaction_id", childTxId);
        MDC.put("parent_transaction_id", parentTxId);
        logger.info("query database");
        
        // 清理线程上下文(避免线程复用导致字段污染)
        MDC.clear();
    }
}

3. 配置日志框架(以Logback为例)

确保日志框架将MDC字段包含在发送给Graylog的GELF格式中,修改Logback配置文件:

<appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
    <graylogHost>localhost</graylogHost>
    <graylogPort>12201</graylogPort>
    <encoder class="de.siegmar.logbackgelf.GelfEncoder">
        <includeMdc>true</includeMdc> <!-- 开启MDC字段自动包含 -->
        <shortPatternLayout>%logger{0}: %m</shortPatternLayout>
    </encoder>
</appender>

<root level="info">
    <appender-ref ref="GELF"/>
</root>

4. Graylog端配置与层级展示

  • 字段索引确认:发送日志后,在Graylog的搜索页面查看日志条目,确认transaction_id和parent_transaction_id字段已被正确识别并索引。
  • 层级视图启用:在搜索结果中,点击日志条目右上角的展开箭头,Graylog会根据parent_transaction_id关联到对应的父日志,自动展示层级结构。
  • 优化体验:可以创建自定义流(Stream)过滤这类事务日志,或者在仪表盘(Dashboard)中添加日志树组件,更直观地展示整个调用链的层级关系。

内容的提问来源于stack exchange,提问作者Dana Mora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 19:10:29