如何从Camel调用的Javascript中记录消息?

时间:2014-07-10 14:42:55

标签: javascript logging apache-camel

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

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

我想从myJavascript.js中记录一条消息,以便消息显示在主Camel Context日志中。

Camel doc here表示CamelContext Java对象已通过。我希望它能包含一个记录器的getter,以便我可以在脚本中做这样的事情:

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

但是,没有引用记录器(我注意到调试器和拦截器的getter),所以看起来我运气不好。

我是如何实现这一目标的?

1 个答案:

答案 0 :(得分:2)

我发现我的答案深深埋藏在本文here内。

我只需要将以下内容添加到我的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");