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

Apache Camel 3.x及以上版本路由追踪配置方法咨询

解决Camel 3.x路由追踪日志的配置问题(从2.x迁移)

刚从Camel 2.x迁到3.x确实会遇到这个追踪器的变化,官方已经移除了旧的Tracer拦截器,换成了内置的新追踪组件,默认用org.apache.camel.Tracing日志名、INFO级别输出。下面给你两种常用的配置方式,以及调整日志级别的方法:

一、applicationContext.xml配置方式

你可以直接在<camelContext>节点里配置全局追踪参数,不需要再单独定义旧的camelTracer和traceFormatter bean了:

<camelContext xmlns="http://camel.apache.org/schema/spring">
    <!-- 全局启用路由追踪 -->
    <property name="tracing" value="true"/>
    <!-- 把追踪日志级别改成DEBUG -->
    <property name="traceLogLevel" value="DEBUG"/>
    <!-- 自定义追踪输出格式(对应你之前的traceFormatter配置) -->
    <property name="traceFormatter">
        <bean class="org.apache.camel.impl.DefaultTraceFormatter">
            <property name="showBody" value="true"/>
            <property name="maxChars" value="0"/>
            <!-- 还可以加showHeaders、showExchangeId等参数自定义输出 -->
        </bean>
    </property>

    <!-- 你的路由定义 -->
    <route id="sampleRoute">
        <from uri="direct:start"/>
        <to uri="direct:end"/>
    </route>
</camelContext>

如果只想给单个路由启用追踪,不需要全局开启,那可以在路由里单独加<tracing/>标签:

<route id="singleTraceRoute">
    <from uri="direct:singleStart"/>
    <tracing/>
    <to uri="direct:singleEnd"/>
</route>

二、Java DSL配置方式

如果是用Java代码定义路由,也可以灵活配置:

全局配置(比如在Spring配置类里)

@Configuration
public class CamelTraceConfig {
    @Bean
    public CamelContext camelContext() throws Exception {
        DefaultCamelContext context = new DefaultCamelContext();
        
        // 全局开启追踪
        context.setTracing(true);
        // 设置日志级别为DEBUG
        context.setTraceLogLevel(LogLevel.DEBUG);
        
        // 自定义格式
        DefaultTraceFormatter formatter = new DefaultTraceFormatter();
        formatter.setShowBody(true);
        formatter.setMaxChars(0);
        context.setTraceFormatter(formatter);
        
        // 添加你的路由
        context.addRoutes(new MyRouteBuilder());
        return context;
    }
}

单个路由启用追踪

public class MyRouteBuilder extends RouteBuilder {
    @Override
    public void configure() throws Exception {
        from("direct:start")
            // 给这个路由单独开启追踪
            .tracing()
            .log("Processing message")
            .to("direct:end");
    }
}

三、快速调整日志级别(无需修改Camel配置)

如果只是想改日志级别,不想动Camel的配置,直接在你的日志框架配置文件里设置org.apache.camel.Tracing的级别就行。比如用Logback的话,在logback.xml里加:

<logger name="org.apache.camel.Tracing" level="DEBUG"/>

用Log4j2的话,在log4j2.xml里加:

<Logger name="org.apache.camel.Tracing" level="DEBUG"/>

额外说明

新的追踪器还支持更多自定义,比如你可以实现org.apache.camel.spi.TraceFormatter接口来完全自定义输出格式,替换默认的DefaultTraceFormatter。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 08:43:11