これは単純なはずですが、しゃれを許してください。春のDSLルート内のラクダにヘッダーを記録しようとしています。 Java DSL の答えを見てきましたが、SpringDSLでそれを機能させる方法を無駄に探していました。私はもう試した:
<log message="ftping $simple{header.CamelFileName}"/>
そしてまた:
<log message="ftping ${header.CamelFileName}"/>
および他のいくつかの順列/バリエーションですが、それらはすべて、そのテキストを逐語的に記録するだけです(つまり、実際のヘッダー名を置き換えません)。
何が欠けていますか?
update:これが私のxmlファイルの大部分です:
<split>
<simple>${body}</simple>
<setHeader headerName="CamelFileName">
<simple>${body.batchNumber}.xml</simple>
</setHeader>
<log message="SLH - 5 -- marshalling an EFileBatch to XML" loggingLevel="DEBUG" />
<marshal>
<jaxb prettyPrint="true" contextPath="generated.gov.nmcourts.ecitation"
partClass="generated.gov.nmcourts.ecitation.NMCitationEFileBatch"
partNamespace="EFileBatch" />
</marshal>
<log message="SLH - 6 -- xslt transform to add schema location" loggingLevel="DEBUG" />
<to uri="{{addSchemaLocationXsltUri}}"/>
<log message="SLH - 7 -- ftp now initiating" loggingLevel="DEBUG" />
<log message="ftping ${headers.CamelFileName}"/>
<to uri="{{ftpOdysseyInputPath}}"/>
<log message="SLH - 8 -- ftp now complete" loggingLevel="DEBUG" />
</split>
しばらく前にこの質問をしたところ、最終的には答えが見つかったので、他の誰かが検索でこのスレッドを見つけた場合に備えて、ここに投稿してください。これは機能します:
<log message="ftping $simple{in.header.CamelFileName}" loggingLevel="DEBUG"/>
次のいずれかを試してください。どちらでも機能します。
<log message="ftping ${header[CamelFileName]}"/>
<log message="ftping ${headers.CamelFileName}"/>
$simple{...}
構文は、Spring ${...}
との競合を回避するためにCamel 2.5で追加されました。古いバージョンを使用している可能性がありますか?
Java DSL
from("logger")
.log(LoggingLevel.INFO, "${in.headers.CamelFileName}")
.end
LoggingLevelはorg.Apache.camel.LoggingLevelからのものです
それが可能かどうかわからない
http://camel.Apache.org/logeip.html
DSLのログとログコンポーネントの違いログDSLははるかに軽量で、Starting todoなどの人間のログをログに記録するためのものです。Simple言語に基づいたメッセージのみをログに記録できます。
一方、ログコンポーネントは、エンドポイントの使用などを含む完全な機能を備えたコンポーネントです。ログコンポーネントは、メッセージ自体をログに記録するためのものであり、ログに記録する対象を制御する多くのURIオプションがあります。