13 Replies Latest reply: Nov 25, 2013 11:34 PM by Cristian Miranda RSS

Configure the client logging done by the Errai Bus

Joseph Berman Newbie

How can I configure the client logging done by the Errai Bus?  Specifically I'd like to disable the "floating DIV logger" when a bus error occurs.  This seems to be enabled by default, but it's unacceptable when our app is deployed in production.

 

There doesn't seem to be any documentation on this in the Errai User Guide or Java Doc.  Can someone desribe it?  Does Errai use the Allen Sauer log?

 

Thanks for the help.

 

-- Joe

  • 1. Configure the client logging done by the Errai Bus
    Heiko Braun Master

    I guess you refer to an application build with workspaces, right?

    In that case it cannot simply be disabled, at least there is no option in terms of API

    or configuration. But you can simply grab a copy of the source code, and patch it yourself:

    https://github.com/errai/errai

     

     

    And yes, it uses the Allen Sauer log impl.

  • 2. Configure the client logging done by the Errai Bus
    Joseph Berman Newbie

    Thanks for the response, Heiko.  Our application does not use workspaces.  It's just a vanilla GWT application running in Tomcat in which we've included Errai Bus for its great messaging support.

     

    Can I configure the Allen Sauer log which Errai Bus uses so that the floating DIV logger is disabled or shown a different way (e.g. within one of my panels in the app)?

     

    e.g. Can I add statements in our app's gwt.xml file that will apply to Errai Bus?

      <set-property name="log_DivLogger" value="DISABLED" />

     

    -- Joe

  • 3. Configure the client logging done by the Errai Bus
    Heiko Braun Master

    I am wondering where the div logger actually comes from. But yes, you should even be able to override  this property in a custom module descriptor.

    But am not 100% sure about this.

     

     

    Are you sure not to import the workspaces module somewhere? That's the only case I can think of why the div logger might visible at all.

  • 4. Configure the client logging done by the Errai Bus
    Joseph Berman Newbie

    Unfortunately it doesn't appear to work.  I tried adding the allen-sauer log (v3.0.4) to our app (GWT 2.1.0) and configuring it to disable the DivLogger, but Errai Bus is still bringing up its DivLogger.  Note: the quick test is to simply hit the browser's Reload button, which briefly shows an ErraiBus exception (from ClientMessageBusImpl:879) in a DivLogger before the page reloads.

     

    Our app inherits the ErraiBus module in our gwt.xml file as follows:

      <inherits name='org.jboss.errai.bus.ErraiBus'/>

     

    We include the following JARs from the ErraiBus distribution in our app's war/WEB-INF/lib:

    • errai-bus.jar
    • errai-common.jar
    • errai-tools.jar
    • google-collections.jar
    • guice.jar
    • mvel2.jar
    • reflections.jar

     

    We do not include errai-workspaces.jar.

  • 5. Configure the client logging done by the Errai Bus
    Joseph Berman Newbie

    Let me ask a related question: is there a way for me to register a "global error handler" with the client Errai Bus so that my code gets called on any generic errors?  That would allow me to handle them in a way that suits me...

  • 6. Configure the client logging done by the Errai Bus
    Mike Brock Master

    There is no support for a global error handler, but that's definitely a feature I feel we should support.

  • 7. Configure the client logging done by the Errai Bus
    Joseph Berman Newbie

    Thanks for the info, Christopher.

     

    After looking into this a little further, I'm beginning to think that the popup window displayed on an ErraiBus error isn't the allen-sauer log but is instead a custom window perhaps written in the Errai codebase.  Here's a screenshot of an example popup window:

    ErraiBusErrorPopup.png

    This doesn't look like the allen-sauer DIV logger.  Is this something written by the Errai developers, and if so is there a way for me to configure its behavior?

  • 8. Configure the client logging done by the Errai Bus
    Mike Brock Master

    Yes, that is a plain error window the bus displays if no other error logger is configured. You can replace the LogAdapter with ClientMessageBusImpl.setLogAdapter()

  • 9. Re: Configure the client logging done by the Errai Bus
    Joseph Berman Newbie

    Eureka, that did it!  Thanks again to Christopher and Heiko.

     

    To help anybody else who might want to do the same thing (hide the ErraiBus error window), here's a snippet from my code:

     

        private static class GneErraiLogAdaptor implements LogAdapter {

            private static final String CLASS_NAME = "GneErraiLogAdaptor: ";

     

            /* (non-Javadoc)

             * @see org.jboss.errai.bus.client.framework.LogAdapter#warn(java.lang.String)

             */

            @Override

            public void warn(String message) {

                Log.warn(CLASS_NAME + message);

            }

     

            /* (non-Javadoc)

             * @see org.jboss.errai.bus.client.framework.LogAdapter#info(java.lang.String)

             */

            @Override

            public void info(String message) {

                Log.info(CLASS_NAME + message);

            }

     

            /* (non-Javadoc)

             * @see org.jboss.errai.bus.client.framework.LogAdapter#debug(java.lang.String)

             */

            @Override

            public void debug(String message) {

                Log.debug(CLASS_NAME + message);

            }

     

            /* (non-Javadoc)

             * @see org.jboss.errai.bus.client.framework.LogAdapter#error(java.lang.String, java.lang.Throwable)

             */

            @Override

            public void error(String message, Throwable t) {

                Log.error(CLASS_NAME + message, t);

            }

        }

     

     

    [...]

            ClientMessageBus clientMsgBus = (ClientMessageBus)erraiBus;

            clientMsgBus.setLogAdapter(new GneErraiLogAdaptor());

  • 10. Re: Configure the client logging done by the Errai Bus
    Heiko Braun Master

    Right, I did completely forget that I implemented the LogAdapter a while ago

  • 11. Re: Configure the client logging done by the Errai Bus
    Cristian Miranda Newbie

    Hi guys, I'm having the same issue with Errai 2.4.2.Final.

     

    Here I don't have LogAdapter and clientMsgBus.setLogAdapter() to solve this problem.

     

    Any ideas?

  • 12. Re: Configure the client logging done by the Errai Bus
    Max Barkley Novice

    Hi Cristian,

     

    To disable the popup logger you can add this to your *.gwt.xml:

    <set-property name="gwt.logging.consoleHandler" value="DISABLED"/>

     

    You can find out about more configurations here.

     

    Cheers.