Page 1 of 1

Improved Logging

PostPosted: Tue Dec 02, 2008 11:11 pm
by Yeroc
All...

Is there any chance that the logging information produced on the server could be improved?

Here's an example error from our server (v4.1.0 rc1) logs:
Code: Select all
2008-12-02 11:21:54,287 ERROR [TP-Processor12] com.servoy.j2db.util.Debug - TypeError: Cannot set property "visible" of undefined to "false" (graphics_find#20)
2008-12-02 11:21:54,287 ERROR [TP-Processor12] com.servoy.j2db.util.Debug - Throwable
org.mozilla.javascript.EcmaError: TypeError: Cannot set property "visible" of undefined to "false" (graphics_find#20)
        at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3650)
        at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3644)
        at org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3655)
        at org.mozilla.javascript.ScriptRuntime.typeError3(ScriptRuntime.java:3679)
        at org.mozilla.javascript.ScriptRuntime.undefWriteError(ScriptRuntime.java:3698)
        at org.mozilla.javascript.ScriptRuntime.setObjectProp(ScriptRuntime.java:1519)
        at org.mozilla.javascript.gen.c10881._c0(Unknown Source)
        at org.mozilla.javascript.gen.c10881.call(Unknown Source)
        at org.mozilla.javascript.optimizer.OptRuntime.callProp0(OptRuntime.java:111)
        at org.mozilla.javascript.gen.c10883._c0(graphics_find:20)
        at org.mozilla.javascript.gen.c10883.call(graphics_find)
        at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:387)
        at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3122)
        at org.mozilla.javascript.gen.c10883.call(graphics_find)
        at com.servoy.j2db.scripting.ScriptEngine.executeFunction(ScriptEngine.java:116)
        at com.servoy.j2db.FormController.Za(FormController.java:38)
        at com.servoy.j2db.FormController.executeFunction(FormController.java:887)
        at com.servoy.j2db.Zdb.Za(Zdb.java:4)
        at com.servoy.j2db.server.headlessclient.dataui.WebEventExecutor.fireActionCommand(WebEventExecutor.java:57)
        at com.servoy.j2db.server.headlessclient.dataui.WebEventExecutor.onEvent(WebEventExecutor.java:116)
        at com.servoy.j2db.server.headlessclient.dataui.Zdc.onEvent(Zdc.java:2)
        at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:163)
        at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:297)
        at org.apache.wicket.request.target.component.listener.BehaviorRequestTarget.processEvents(BehaviorRequestTarget.java:100)
        at org.apache.wicket.request.AbstractRequestCycleProcessor.processEvents(AbstractRequestCycleProcessor.java:91)
        at org.apache.wicket.RequestCycle.processEventsAndRespond(RequestCycle.java:1175)
        at org.apache.wicket.RequestCycle.step(RequestCycle.java:1252)
        at org.apache.wicket.RequestCycle.steps(RequestCycle.java:1353)
        at org.apache.wicket.RequestCycle.request(RequestCycle.java:493)
        at org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:355)
        at org.apache.wicket.protocol.http.WicketServlet.doGet(WicketServlet.java:124)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:563)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:686)
        at java.lang.Thread.run(Thread.java:595)


This error would be much more helpful if it included the Javascript stack trace (where applicable) since we often need to know what code called the method that triggered the error not just where the error occurred.

Also, the logging does not include the name of the affected Solution. Since we have a number of Solutions running on a single server it makes sense that all errors that are applicable to a single Solution should include the Solution name. It looks like Servoy is using log4j so it would be relatively easy to use the MDC or NDC features to include the Solution name.

Thanks...
Corey

Re: Improved Logging

PostPosted: Wed Dec 03, 2008 1:10 pm
by jcompagner
please add a feature request for this in our support system

Re: Improved Logging

PostPosted: Wed Dec 03, 2008 6:46 pm
by Yeroc
I've created case # 178133 for this.