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

如何记录来自由Camel调用的Javascript的消息?

董胡非
2023-03-14

我正在调用Apache Camel XML DSL中的Javascript文件,该文件在Apache ServiceMix中运行,如下所示:

<endpoint id="myJavascript" uri="language:javascript:file:data/myJavascript.js"/>
...
<to ref="myJavascript"/>
...

我想在myJavascript中记录一条消息。这样消息就会显示在主Camel上下文日志中。

这里的Camel文档表示传递了CamelContext Java对象。我希望它能为记录器提供一个getter,这样我就可以在脚本中做这样的事情:

var log = context.getLog();
log.debug("Some debug log message");

然而,这里并没有提到记录器(我注意到调试器的getter和拦截器),所以看起来我运气不好。

有什么想法我可以做到这一点吗?

共有1个答案

窦凯定
2023-03-14

我在这篇文章中找到了我的答案。

我只需要在Javascript中添加以下内容:

var LOG = org.slf4j.LoggerFactory.getLogger(exchange.getFromRouteId());

这使用Camel Exchange From Route Id作为日志名称,但您可以改用脚本名称。

然后我可以按如下方式调用记录器,消息最终会出现在主Camel记录器中:

LOG.info("Log message at INFO level");
LOG.debug("Log message at DEBUG level");
 类似资料:
  • 我使用的是Camel 2.9.2,完成路线定义如下: 中提供https://stackoverflow.com/questions/18877562/how-can-i-log-a-header-value-in-camel-using-spring-dsl解决方案由于某种原因对我不起作用。 我可以看到一些与路由定义相关的驼峰跟踪

  • 我正在开发一个需要从第三方SOAP Web服务读取数据的小型camel应用程序。 我还需要定义一个类似的路由,但在“From”中使用REST web服务

  • Iam试图用camel IE实现重播机制,我将不得不检索所有已经保存的消息,并转发到适当的camel路由进行重新处理。这将由quartz调度器触发。 我通过使用下面的代码实现了同样的效果。 1)一旦quartz调度器被触发,fwd到处理器,处理器将查询db并将消息作为列表,并在camel exchange属性中设置相同的属性作为列表。2)使用camel,其中LoopProcessor将在excha

  • 在spring中提供了三种不同的方法来连接响应端: 我的目标是记录每个响应(标题状态代码),不管结果如何。 我怎样才能知道上述哪种方法是正确的?

  • 这个递归编码是错误的还是仅仅是那个控制台。即使执行递归,log()也不总是被执行? 在控制台中执行testrecursion不会返回任何错误。 信息控制台日志显示 再次执行测试递归会在信息控制台日志中显示这一点。 第三次执行testrecursion会在信息控制台日志中显示这一点。 在对此进行了数十次测试后,递归步骤似乎偶尔被调用。输出似乎是随机的。预期输出为 这是否看起来像递归正确发生,只是控制

  • 问题内容: 使用pyspark on访问Spark的log4j记录器的正确方法是什么 遗嘱执行人? 在驱动程序中这样做很容易,但我似乎不明白如何访问 executor上的日志记录功能,以便我可以在本地进行日志记录并 纱线收集当地的原木。 有什么方法可以访问本地记录器吗? 标准的日志记录过程是不够的,因为我无法访问spark 执行器的上下文。 问题答案: 不能对执行器使用本地log4j记录器。Pyt