14

这似乎应该很简单,请原谅双关语。我正在尝试在 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>
4

5 回答 5

18

前段时间问过这个问题,并意识到我最终找到了答案,所以应该把它贴在这里,以防其他人在搜索中找到这个线程。这有效:

<log message="ftping $simple{in.header.CamelFileName}" loggingLevel="DEBUG"/>
于 2014-04-09T20:03:39.927 回答
8

尝试以下方法,任何一个都可以:

<log message="ftping ${header[CamelFileName]}"/>
<log message="ftping ${headers.CamelFileName}"/>

Camel 2.5 中添加了$simple{...}语法以避免与 Spring 冲突${...}- 可能是您使用的是旧版本?

于 2013-09-19T08:21:55.837 回答
7

在 JAVA DSL 中

from("logger")
.log(LoggingLevel.INFO, "${in.headers.CamelFileName}")
.end

LoggingLevel 来自 org.apache.camel.LoggingLevel

于 2019-02-25T10:14:53.960 回答
1

我可以完成的一种方法(使用 Java DSL)是:

from("logger")
.log("${exchange.getIn().getHeader(\"<HEADER>\").toString()}")
.end

其中“<HEADER>”应替换为您想要的任何标题键,例如“授权”:

from("logger")
.log("${exchange.getIn().getHeader(\"Authorization\").toString()}")
.end
于 2021-05-07T13:42:58.460 回答
0

不确定是否可能

http://camel.apache.org/logeip.html

DSL 和 Log 组件中的 log 区别 log DSL 更轻量级,用于记录人的日志,例如开始做...等。它只能记录基于 Simple 语言的消息。

另一方面,日志组件是一个完整的组件,涉及使用端点等。日志组件用于记录消息本身,您有许多 URI 选项来控制您希望记录的内容。

于 2013-09-18T17:30:14.203 回答