Remote Logging

Log4Fx
Greg
2009-06-10
2013-04-29
  • Greg
    Greg
    2009-06-10

    Just to preface, I am new to Log4Fx. I am working on doing a POC using Log4Fx to see if it is a tool that our team will want to use. I have been able to get it working just fine locally but I am having problems in getting the remote logging working. I have a test Flex app that i have released to a server. From one computer I access the main application and bring up the logging manager and select remote logging and give a password. From a different computer I access the RemoteLogReceiver.html. I enter the password that I created and then I get the following error message.

    [MessagingError message='Destination 'RemoteLogging' either does not exist or the destination has no channels defined (and the application does not define any default channels.)']
        at mx.messaging.config::ServerConfig$/internalGetChannelSet()
        at mx.messaging.config::ServerConfig$/getChannelSet()
        at mx.messaging::MessageAgent/initChannelSet()
        at mx.messaging::MessageAgent/internalSend()
        at mx.messaging::Consumer/internalSend()
        at mx.messaging::AbstractConsumer/subscribe()
        at RemoteLogReceiver/subscribe()
        at flash.events::EventDispatcher/dispatchEventFunction()
        at flash.events::EventDispatcher/dispatchEvent()
        at mx.core::UIComponent/dispatchEvent()
        at com.theriabook.util.logging.components::LogsPanel/___LogsPanel_Button8_click()

    Not sure what else I need to set up in order to get this working. This is a key feature that we would like to take advantage of.

    Just for information I am using the latest Log4Fx version, Flex Builder 3.0.2, and Eclipse 3.4.2.

    Any help would be greatly appreciated.

     
    • Greg,

      This destination is in messaging-config.xml upon configuring project for Log4Fx.
      However, as usual, global variable ServerConfig.xml gets assigned the footprint of xyz-config.xml files upon Clean.
      As an advice, add -keep to the compiler settings and check the <app or remotelogviewer>_FlexInit.as.
      In the bottom part of this generated file you will see the channels and destinations that ARE available to the SWF.

      Kind Regards,
      Victor

       
      • srayker
        srayker
        2009-06-11

        Hi,
            I am trying to achieve the same through actionscript. When i compile the application, i do not pass the services-config.xml path as a compiler arg. I load this file in the application when it is initialized and i set the end points for all remote call. Below is how i initialise the remote logging

        loggingTarget.logOutput = new RemoteOutput('RemoteLogging');
        (loggingTarget.logOutput as RemoteOutput).subtopic = 'pass';
         
                I face the the same error mentioned above. What i would like to know is can we set the end point URL as we do for the flex HttpService class for the RemoteOutput class?

        Regards,
        srayker

         
        • Most likely RemoteLogging application and your application are in one project. Which means that both of them do not see the messaging channel/destination. My suggestion: fight one application at a time. In particular, let RemoteLogging application compile WITH services-config.xml by providing additional RemoteLogging-config.xml file that specifies extra compiler arguments for this app.

          Kind Regards,
          Victor

           
          • srayker
            srayker
            2009-06-11

            Thanks Victor for the quick reply. As you said, both the RemoteLogging application and the RemoteLogReciever are in the same application. We have a restriction in our application of not using the services-config.xml as a compiler argument because of build automation issues. Hence we set the end point url's through the code.
                  Is there a way of passing the end point url through the code for the RemoteLogging  class (sorry for repeating the same question again)

            Your response is greatly appreciated.
            Regards,
            srayker

             
            • You are welcome. You can set ChannelSet for a Producer or Consumer exactly the same programmatical way you did for a RemoteObject.

              That said, having seen many continous integration builds, I can't figure how service-config got in the way of the build. If anything, use Application's preinitialize event to achieve the ultimate flexibility of dynamically modifying ServerConfig.xml after services-config.xml data has been injected into SWF, but keep work of build engineers and developers totally independent.

              Kind Regards,
              Victor