这似乎应该很简单,原谅双关语。我正试图在Spring DSL路线中记录骆驼的标题。我已经看到了Java DSL的答案,但我一直在寻找如何使它在Spring DSL中工作的徒劳。我试过了:
<log message="ftping $simple{header.CamelFileName}"/>
还有:
<log message="ftping ${header.CamelFileName}"/>
和其他几种排列/变体,但它们都只是简单地记录该文本(即它们不替代实际的标题名称)。
我错过了什么?
更新:这是我的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>
答案 0 :(得分:15)
回过头来问这个问题,并意识到我最终找到了答案所以应该在这里发布,以防其他人在搜索中找到这个帖子。这有效:
<log message="ftping $simple{in.header.CamelFileName}" loggingLevel="DEBUG"/>
答案 1 :(得分:7)
尝试以下方法,可以使用:
<log message="ftping ${header[CamelFileName]}"/>
<log message="ftping ${headers.CamelFileName}"/>
在Camel 2.5中添加了$simple{...}
语法,以避免与Spring ${...}
发生冲突 - 可能是您使用的是旧版本?
答案 2 :(得分:0)
不确定是否可能
http://camel.apache.org/logeip.html
登录DSL和Log组件之间的区别 日志DSL更轻,用于记录人类日志,如开始做...等。它只能记录基于简单语言的消息。
另一方面,Log组件是一个完整的组件,涉及使用端点等.Log组件用于记录Message本身,并且您有许多URI选项来控制您希望记录的内容。
答案 3 :(得分:0)
在JAVA DSL中
from("logger")
.log(LoggingLevel.INFO, "${in.headers.CamelFileName}")
.end
LoggingLevel来自org.apache.camel.LoggingLevel
答案 4 :(得分:0)
我可以实现的一种方法(使用 Java DSL)是:
from("logger")
.log("${exchange.getIn().getHeader(\"<HEADER>\").toString()}")
.end
其中“
from("logger")
.log("${exchange.getIn().getHeader(\"Authorization\").toString()}")
.end