当前位置: 首页 > 知识库问答 >
问题:

Spring Boot和Camel-日志路线持续时间

梁修贤
2023-03-14

我正在迁移一个应用程序以使用最新版本的 Spring Boot。目前所有的骆驼路线都是XML格式的,我使用这种方法运行它。

所有路由当前都会在处理结束时记录一条消息。我想知道是否有一种方法可以检测特定路由执行和添加到日志消息所用的时间。有了这些信息,我们就可以创建数据狗仪表盘来显示骆驼路线的统计数据

先谢了Damien

共有1个答案

晁英彦
2023-03-14
public class MyLoggingSentEventNotifer extends EventNotifierSupport {

  public void notify(EventObject event) throws Exception {

    if (event instanceof ExchangeCompletedEvent) {;
      ExchangeCompletedEvent completedEvent = (ExchangeCompletedEvent) event;
      Exchange exchange = completedEvent.getExchange();
      String routeId = exchange.getFromRouteId();
      Date created = ((ExchangeCompletedEvent) event).getExchange()
                        .getProperty(Exchange.CREATED_TIMESTAMP, Date.class);
      // calculate elapsed time
      Date now = new Date();
      long elapsed = now.getTime() - created.getTime();
      log.info("Took " + elapsed + " millis on the route : " + routeId);
    }

 }

 public boolean isEnabled(EventObject event) {
        // we only want the sent events
        return event instanceof ExchangeSentEvent;
 }

 protected void doStart() throws Exception {
        // noop
 }

 protected void doStop() throws Exception {
        // noop
 }

}

context.getManagementStrategy().addEventNotifier(new MyLoggingSentEventNotifer());

参考

https://people . Apache . org/~ dkulp/camel/event notifier-to-log-details-about-all-sent-exchange . html

更新

Exchange.CREATED_TIMESTAMP不再存储为Exchange属性,但您应该在Exchange上使用getCreted方法。

 类似资料:
  • SpringBoot默认有日志输出 2017-02-27 16:04:06.644 INFO 15384 --- [ main] com.clsaa.edu.springboot.App : Starting App on eggyer with PID 15384 (D:\Data\MyCode\codeMaven\learn_springboot004\target\classes start

  • 从我的部署中获取最新日志-我正在处理一个错误并有兴趣在运行时了解日志-如何获取连续的日志流? 编辑:最后更正的问题。

  • 问题内容: 我有一个示例表(table_name:track_task),如下所示: 当任务阶段由于应用程序代码中的某些操作而进行时,以上数据将自动填充。阶段从1到4。但是,由于某种逻辑,任务可能会跳过阶段3。但是所有任务都将在阶段4结束。可能的任务路径如下所示: 我需要查询和检索一个报告,该报告显示任务在给定时间在每个阶段需要多长时间(以天为单位)。到目前为止,我已经提出了以下查询: 得出如下结

  • 我正在尝试创建一个SpringBoot Camel应用程序(用于测试)。我已经配置了SpringBoot和camel-spring。它似乎在工作,但在将数据发送到activemq(通过SendBody)时却失败了。 ApplicationContext.xml 它在template.sendBody()处失败的主应用程序 错误信息 有人知道它为什么不起作用吗?对于我读过的文件来说,它应该能起作用。

  • 当我从2移植Apache Camel版本时。从x到3.1.0,再加上Camel REST DSL和Spring Boot,我面临以下日志记录问题。 我的日志记录键定义在application.propertiesi中,e mymail=Hello World。当我将其用作 我的问题是我有很多使用{{xxx}}的日志语句,不幸的是在3.1.0升级过程中不起作用。 我是否错过了任何特定的设置。 我尝试