30.10. 日志输出的完整自定义


通过部分中所述的选项,您可以控制日志记录器的大部分输出。但是,日志行总是遵循此结构:

Exchange[Id:ID-machine-local-50656-1234567901234-1-2, ExchangePattern:InOut,
Properties:{CamelToEndpoint=log://org.apache.camel.component.log.TEST?showAll=true,
CamelCreatedTimestamp=Thu Mar 28 00:00:00 WET 2013},
Headers:{breadcrumbId=ID-machine-local-50656-1234567901234-1-1}, BodyType:String, Body:Hello World, Out: null]
Copy to Clipboard Toggle word wrap

在某些情况下这种格式不可理解,这可能是因为您需要…​

  • 过滤所打印的标头和属性,使其与洞察和详细程度之间的平衡。
  • 将日志消息调整为您认为最易读的任何消息。
  • 通过日志采集系统来定制日志消息,如 Splunk。
  • 不同的打印特定正文类型。

每当需要绝对自定义时,您可以创建实施接口的类。在您可以访问完整交换 的格式(Exchange) 方法中,您可以选择并提取您需要的确切信息,以自定义方式对其进行格式化并返回。返回值将变为最终日志消息。

您可以通过以下两种方式之一获取您的自定义 交换格式

在 registry 中显式实例化 LogComponent:

<bean name="log" class="org.apache.camel.component.log.LogComponent">
   <property name="exchangeFormatter" ref="myCustomFormatter" />
</bean>
Copy to Clipboard Toggle word wrap

30.10.1. 与配置相关的约定

只需使用名称 logFormatter 注册 bean,日志组件就足够智能,可自动选取它。

<bean name="logFormatter" class="com.xyz.MyCustomExchangeFormatter" />
Copy to Clipboard Toggle word wrap
注意

ExchangeFormatter 应用到该 Camel 上下文 中的所有日志端点。如果您不同的端点需要不同的 ExchangeFormatters,请根据需要实例化 LogComponent,并使用相关的 Bean 名称作为端点前缀。

使用自定义日志格式ter 时,您可以在 log uri 中指定参数,这在自定义日志格式器上配置。虽然当您这样做时,您应该将"logFormatter"定义为有原型范围,因此如果您具有不同的参数,则其不共享,例如:

<bean name="logFormatter" class="com.xyz.MyCustomExchangeFormatter" scope="prototype"/>
Copy to Clipboard Toggle word wrap

然后,我们可以使用带有不同选项的 log uri 进行 Camel 路由:

<to uri="log:foo?param1=foo&amp;param2=100"/>

<to uri="log:bar?param1=bar&amp;param2=200"/>
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat