12.2. LogEIP


概述

Apache Camel 提供了几种方法来执行路由登录:

  • 使用 log DSL 命令。
  • 使用 Log 组件可以记录消息内容。
  • 使用 tracer,跟踪消息流。
  • 使用 处理器 或 Bean 端点在 Java 中执行日志记录。
log DSL 命令和日志组件之间的区别

日志 DSL 更加轻量,用于记录人类日志,如 Starting to do …​。它只能根据 简单 语言记录消息。相比之下,Log 组件是一个功能齐全的日志记录组件。Log 组件可以记录消息本身,并且有许多 URI 选项来控制日志记录。

Java DSL 示例

Apache Camel 2.2 开始,您可以使用 log DSL 命令在运行时使用简单表达式语言构建日志消息。例如,您可以在路由中创建日志消息,如下所示:

from("direct:start").log("Processing ${id}").to("bean:foo");

此路由会在运行时构造一个 String 格式信息。日志消息记录到 INFO 级别,使用路由 ID 作为日志名称。默认情况下,路由会连续命名,即 route-1route-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 元素支持 消息loggingLevellogName 属性。例如:

<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>

如果有多个日志,并且您希望在所有日志名称中都有相同的日志名称,则必须将配置添加到每个日志。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.