Then javascript in vertx can use java style log, can use separated log config, can output full javascript error and java exception stacktrace.
like these code:
var utils = require("com/branchitech/vertx/utils");
var log = utils.getLogger("com.branchitech.monitor.ComputeWight");
var intValue = 1;
var stringValue = "stringValue";
var jsonObject = {a:1, b:2};
try {
Packages.java.lang.Long.valueOf("aaaa"); //throw a javascript error
} catch (err) {
log.error("intValue %d, stringValue %s, jsonObject %j", intValue, stringValue, jsonObject, err);
}
will output :
18:53:28.014 [vert.x-eventloop-thread-7] ERROR com.branchitech.monitor.ComputeWight - intValue 1, stringValue stringValue, jsonObject {"a":1,"b":2}
Script Error : JavaException : java.lang.NumberFormatException: For input string: "aaaa"
Error at : file:/home/lzh/dev/metrics/metric-monitor/target/classes/com/branchitech/vertx/ComputeWeight.js:36
Script Stack :
at file:/home/lzh/dev/metrics/metric-monitor/target/classes/com/branchitech/vertx/ComputeWeight.js:36
java.lang.NumberFormatException : For input string: "aaaa"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Long.parseLong(Long.java:441)
at java.lang.Long.valueOf(Long.java:540)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.mozilla.javascript.MemberBox.invoke(MemberBox.java:126)
at org.mozilla.javascript.NativeJavaMethod.call(NativeJavaMethod.java:225)
at org.mozilla.javascript.optimizer.OptRuntime.call1(OptRuntime.java:32)
at org.mozilla.javascript.gen.file__home_lzh_dev_metrics_metric_monitor_target_classes_com_branchitech_vertx_ComputeWeight_js_48._c_script_0(file:/home/lzh/dev/metrics/metric-monitor/target/classes/com/branchitech/vertx/ComputeWeight.js:36)
at org.mozilla.javascript.gen.file__home_lzh_dev_metrics_metric_monitor_target_classes_com_branchitech_vertx_ComputeWeight_js_48.call(file:/home/lzh/dev/metrics/metric-monitor/target/classes/com/branchitech/vertx/ComputeWeight.js)
at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394)
at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091)
at org.mozilla.javascript.gen.file__home_lzh_dev_metrics_metric_monitor_target_classes_com_branchitech_vertx_ComputeWeight_js_48.call(file:/home/lzh/dev/metrics/metric-monitor/target/classes/com/branchitech/vertx/ComputeWeight.js)
at org.mozilla.javascript.gen.file__home_lzh_dev_metrics_metric_monitor_target_classes_com_branchitech_vertx_ComputeWeight_js_48.exec(file:/home/lzh/dev/metrics/metric-monitor/target/classes/com/branchitech/vertx/ComputeWeight.js)
at org.mozilla.javascript.commonjs.module.Require.executeModuleScript(Require.java:340)
at org.mozilla.javascript.commonjs.module.Require.getExportedModuleInterface(Require.java:288)
at org.mozilla.javascript.commonjs.module.Require.requireMain(Require.java:137)
at org.vertx.java.platform.impl.RhinoVerticleFactory$RhinoVerticle.start(RhinoVerticleFactory.java:229)
at org.vertx.java.platform.Verticle.start(Verticle.java:82)
at org.vertx.java.platform.impl.DefaultPlatformManager$19.run(DefaultPlatformManager.java:1551)
at org.vertx.java.core.impl.DefaultContext$3.run(DefaultContext.java:176)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353)
at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101)
at java.lang.Thread.run(Thread.java:744)