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
相关产品推荐
相关产品推荐

