Search CTAT

Troubleshooting logging from Flash tutors

Last updated August 17, 2007

Table of contents

Normal Test Cycle

Authors often ask how they can test logging. Ultimately, you should validate data in the DataShop data base using a tool like DB Visualizer or by working with the DataShop personnel. But, there are some additional steps that you can take to test and troubleshoot. The diagram below shows the flow of data from an application like OLI to the DataShop log server.

If logging is not working, the problem can be a bit mysterious, and you may be at a loss as to where to start. To troubleshoot the problem, you can peer into the flow of data at a few points to find the source of the problem:

  • You can look at the XML log messages that are generated by the Logging Library (step (4)). The Logging Library traces the XML that it produces. To view the tracing, run your tutor in the Flash IDE and traces will appear in the output window. If you are testing in a browser, you can view traces in a text editor. (Instructions for doing the latter on Mac & PC). You can also view the data that is sent over the network using network analysis tools. A list of these is shown below in the section about cross-domain policy files.
  • You can preview flashvars in the tutor's HTML source (step (3)).
  • If using OLI, you can review the workbook page. In that page flashvars correspond to the <param> elements.

Missing or malformed flashvars variables are a common source of problems. You should ensure that your delivery application (e.g., OLI or TutorShop) is sending the proper data to the Flash tutor in the form of flashvars variables. Logging in CTAT tutors can be formally or effectively enabled or disabled with three Flashvars values.

  • Logging: If set to 'None', logging is disabled. If set to 'Client To Log Server' the tutor will log with the Flash Logging Library. The CTAT CommShell component includes Logging as a component property. If you don't set Logging in flashvars, the system will use the value from the component.
  • LoggingLibraryPath: This is the path that the CTAT CommShell uses to load the library. If set to a bad URL or an unknown path, logging is effectively disabled. The CTAT CommShell component will produce a message when this happens. If you don't set it in flashvars, it will default to the value in the Logging Library property in CommShell (http://learnlab.web.cmu.edu/swf/CommLoggingLibrary.swf).
  • log_service_url: If set to a bad URL or an unknown path, Flash will try to send log messages but of course, they won't reach the server. To narrow down the problem, you can look at the XML messages being produced by the logging library and you can look at the network traffic coming from your tutor to detect log messages.

Outside of OLI

If you are NOT using OLI or the CTAT TutorShop then you will need to set some flashvars which are related to user authentication (steps (1), (a), and (2) in the diagram). These are critical for analysis of log data because they identify the student and the time period that the student is using the tutor. When you set these values, CTAT tutors will automatically send a session message (step (d)) which provides the identification information. If these flashvars are not set and you are not in OLI then your data may reach the DataShop but it will not be readily retrievable.

  • DeliverUsingOLI=false
  • user_guid
  • session_id
  • container_id
  • auth_token
  • external_object_id

Cross-Domain Policy Files

If you are hosting your tutors from a server other than a OLI server, the DataShop Learnlab server or the PLSC-QA server, you may run into problems logging because the Flash player restricts cross domain communication (step (d)). The DataShop has set up their computers with a cross-domain policy file to accept cross domain messages which should alleviate this problem. But, if you think your tutor and delivery system are working correctly, this is an area to investigate.

A good article on the topic of cross-domain policy files can be found at:
http://moock.org/asdg/technotes/crossDomainPolicyFiles/

The CTAT team has often used network analysis tools to test messages that are sent over the network. These can be used to view the XML data that is being sent, to verity that the message is being sent and to ensure that the server is accepting the messages. Some tools that we've found useful:

Using An Old Shell with the Version 2 Library

Tutors built with Flash components from the CTAT 2.0 release or earlier are not compatible with the version 2 Logging Library. It may not be obvious which version of the tools you are using.

To tell which version of the logging library you are using, right-click a CTAT tutor and in the context menu, the version number will appear for version 2 library. It will read 'Library Version=2.1.0.4' etc). If no number appears, you either have an older library or you don't have a library loaded.

To tell which version of the CommShell you using, change the Shell property named 'Behavior Recorder Mode' to AuthorTime and the version will appear in the header of the CommShell. The Library will also try to instruct the Shell to display a message about the situation. This should work if you are loading your tutor from a web site, but it won't work when opening a tutor off the desktop because of Flash security restrictions.

Library Version

Shell Version Number

Using A New Shell with Version 1 Library

Tutors built with Flash components from the CTAT 2.1 release or later are not compatible with the version 1 Logging Library. It may not be apparent which version of the tools you are using.

To tell which version of the library, you can right click a CTAT tutor and in the context menu, the version number will appear for version 2 library. It will read 'Library Version 2.1.0.4 etc). If no number appear, you either have a version 1 library or you don't have a library loaded. To tell the version of the Shell, you can change the Shell property named 'Behavior Recorder Mode' to AuthorTime and the version will appear in the header of the CommShell. The Library will also try to instruct the Shell to display a message about the situation.