我从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),所以看起来我运气不好。
我是如何实现这一目标的?
答案 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");