12.2. LogEIP
概述
Apache Camel 提供了几种方法来执行路由登录:
-
使用
log
DSL 命令。 - 使用 Log 组件可以记录消息内容。
- 使用 tracer,跟踪消息流。
-
使用
处理器
或 Bean 端点在 Java 中执行日志记录。
Java DSL 示例
从 Apache Camel 2.2 开始,您可以使用 log
DSL 命令在运行时使用简单表达式语言构建日志消息。例如,您可以在路由中创建日志消息,如下所示:
from("direct:start").log("Processing ${id}").to("bean:foo");
此路由会在运行时构造一个 String
格式信息。日志消息记录到 INFO
级别,使用路由 ID 作为日志名称。默认情况下,路由会连续命名,即 route-1
、route-2
等。但是,您可以使用 DSL 命令( routeId ("myCoolRoute")
指定自定义路由 ID。
日志 DSL 还提供变体,可让您明确设置日志级别和日志名称。例如,要将日志记录级别明确设置为 LoggingLevel.DEBUG
,您可以按照如下所示调用 log DSL:
日志 DSL 具有超载的方法,也可设置日志级别和/或名称。
from("direct:start").log(LoggingLevel.DEBUG, "Processing ${id}").to("bean:foo");
要将日志名称设置为 fileRoute
,您可以按照如下所示调用日志 DSL:
from("file://target/files").log(LoggingLevel.DEBUG, "fileRoute", "Processing file ${file:name}").to("bean:foo");
XML DSL 示例
在 XML DSL 中,日志 DSL 由 log
元素表示,日志消息通过设置 message
属性来指定,如下所示:
<route id="foo"> <from uri="direct:foo"/> <log message="Got ${body}"/> <to uri="mock:foo"/> </route>
log
元素支持 消息
、loggingLevel
和 logName
属性。例如:
<route id="baz"> <from uri="direct:baz"/> <log message="Me Got ${body}" loggingLevel="FATAL" logName="cool"/> <to uri="mock:baz"/> </route>
全局日志名称
路由 ID 用作默认日志名称。由于 Apache Camel 2.17 通过配置 logname 参数可以更改日志名称。
Java DSL,根据以下示例配置日志名称:
CamelContext context = ... context.getProperties().put(Exchange.LOG_EIP_NAME, "com.foo.myapp");
在 XML 中,按照以下方式配置日志名称:
<camelContext ...> <properties> <property key="CamelLogEipName" value="com.foo.myapp"/> </properties>
如果有多个日志,并且您希望在所有日志名称中都有相同的日志名称,则必须将配置添加到每个日志。