Log storage: Logstore xAPI

Maintained by Picture of jerrett fowler jerrett fowler, Picture of Ryan Smith Ryan Smith, Picture of David Pesce David Pesce
Logstore_xapi is a logstore plugin which emits xAPI statements (also known as Tin Can) to an LRS of your choice.
260 sites
20 fans

What does it do?

As stated on the Github repository, the plugin simply “emits events from the Moodle Logstore as xAPI or TinCan statements”. For those that don’t know, the Moodle Logstore is a log of activities in Moodle. When you view a course, complete a quiz, or grade a student a log of that activity is recorded in the Logstore. The plugin uses these logs to produce xAPI/TinCan statements and then sends (emits) them to an LRS (Learning Record Store).

How does it work?

The plugin is made up of three parts, an Expander, a Translator, and an Emitter. Every log entry goes through each of these parts in a six-step process before finally reaching the LRS (see below).

  1. The plugin passes the log entry from the logstore_standard_log to the Expander.

  2. The Expander expands the log entry with data from your Moodle database.

  3. The plugin passes the expanded event from step 2 to the Translator.

  4. The Translator translates the expanded event to xAPI/TinCan recipe options.

  5. The plugin passes the translated event from step 4 to the Emitter.

  6. The Emitter constructs the translated event as an xAPI/TinCan statement and emits it to the LRS.

Potential privacy issues

This system sends logging information over the internet. This would include information about the user, links to their profile, and information of courses completed. It would be recommended to have a secure connection between your website and LRS if they are not within a private network.


Screenshot #0


Picture of jerrett fowler
jerrett fowler (Lead maintainer)
Picture of Ryan Smith
Ryan Smith: Developer
Picture of David Pesce
David Pesce: Developer
Please login to view contributors details and/or to contact them

Comments RSS

Show comments
  • Picture of Sebastian Castellanos
    Sun, 21 May 2017, 11:11 PM
    Hi there !
    I've configured the plugin with waxlrs, and it's working ok , but, for all user on quiz I can only see view statements but not complete.
    I checked the list of sent event and I see that \mod_quiz\event\attempt_reviewed will fire a complete statement . But no sure when attempt_reviewed is fired . This mean that a profesor interaction is necessary ? I would like to achieve when the student finish the quiz then, a complete statement is fired with the score. How I do that ?

    Best Regards
  • Picture of Ryan Smith
    Thu, 8 Jun 2017, 6:36 PM
    Hey Sebastian, thanks for your comment. I think you'd be better served by making this comment on our Github issue tracker https://github.com/xAPI-vle/moodle-logstore_xapi/issues/new. It's just a little hard to keep a track of this thread on here unfortunately.
  • Picture of Antonio Balderas
    Mon, 24 Jul 2017, 6:36 AM

    I'm trying to install it on Moodle 3.3, but I am receving an error when validating (Validating logstore_xapi ... Error). Then the installation is cancelled. Is there something I'm doing wrong?

    Thanks in advance,
  • Picture of Ryan Smith
    Mon, 24 Jul 2017, 4:26 PM
    Hey Antonio, thanks for your comment. That is quite interesting, I assume you're using the latest version of the plugin. Please post this issue on our Github issue tracker and we'll try to resolve it there (it's a little easier to follow the thread on there). https://github.com/xAPI-vle/moodle-logstore_xapi/issues/new
  • Picture of Dasu Gunathunga
    Tue, 22 Aug 2017, 11:28 AM
    Hi Ryan, we successfully installed this plugin into our Moodle. Now we want to upload all the records available in mdl_logstore_standard_log table into Learning Locker (To get all the history). Is it possible to use this plugin to get that? Thanks.
  • Picture of Ryan Smith
    Tue, 22 Aug 2017, 5:46 PM
    Hi Dasu, thanks for your comment. It is possible although not natively supported in the plugin at the moment. David Kane contributed a script to do this a little while ago that you can use https://github.com/xAPI-vle/moodle-logstore_xapi/issues/42#issuecomment-252853343.
  • Picture of Dasu Gunathunga
    Fri, 25 Aug 2017, 10:13 AM
    Hi Ryan,
    Thanks for this reply. As David explained, after populated the records into ‘mdl_logstore_xapi_log", I executed the scheduled task . However there is an issue in new plugin version (2017061100). I can successfully send xapi statements into Learning Locker, but records didn’t delete from the ‘mdl_logstore_xapi_log’. I found this issue here in store.php
    $xapiEvents = $xapiController->createEvents($translatorEventsBatch);
    foreach(array_keys($xapiEvents) as $key) {
    if (is_numeric($key)) {
    $sentEvents[$xapiEvents[$key]['context']['extensions'][$translatorEventReadReturn[0]['context_ext_key']]['id']] = $xapiEvents['last_action_result'];

    $xapiEvents variable get response like this,
    [statements] => Array()
    [response] => TinCan\LRSResponse Object(
    [success] => 1
    [content] => Array()
    Therefore is_numeric doesn’t work as array keys are ‘statements’ and ‘response’. Further there is no attribute called 'last_action_result' here. Can you please explain this to me? Thanks for your time.
  • Picture of Ryan Smith
    Fri, 25 Aug 2017, 8:07 PM
    Hey Dasu, thanks for finding that issue and digging through to find the exact cause. Could you please create an issue in our Github issue tracker? That will ensure someone picks up the issue. https://github.com/xAPI-vle/moodle-logstore_xapi/issues
  • Paul
    Wed, 20 Sep 2017, 3:01 PM
    I just tried to install it on Moodle 3.3, but it failed. Any thoughts?
  • Picture of Ryan Smith
    Wed, 20 Sep 2017, 4:33 PM
    Hi Paul, thanks for the your message, you might find it useful to check out this Github issue https://github.com/xAPI-vle/moodle-logstore_xapi/issues/128. I'm not sure if you're experiencing the same issue, but it certainly could be.
  • Paul
    Thu, 21 Sep 2017, 5:12 PM
    I just tried to install it on Moodle 3.3, but it failed. Any thoughts?
  • Paul
    Fri, 22 Sep 2017, 8:25 PM
    The last version of the plugin that will install, though with the error message described above, and that will not corrupt the Moodle database such that you have no access to your administration level, is version 1.4.0.
    All versions of the plugin after this date do not work: so DONOT try to install them, in fact best would be for them to be taken down before they cause others a whole load of headaches.
  • Paul
    Thu, 12 Oct 2017, 12:27 PM
    Dear all, I have just installed and tested 2.1.5 and that works for me on Moodle 3.3.2 The word of caution remains in that it would be highly inadvisable to install version 2 of the plugin on a Moodle 3.3.x system since it will "Müller" your system and require a fair degree of backend work to correct the problem.
  • Picture of Dey Bendifallah
    Mon, 16 Oct 2017, 4:45 PM
    Thank you Ryan & Al for this great job
    But I add this remark to those who work behind a proxy server:
    If you are using the Tincanlaunch Mod and you are behind a proxy server, consider changing the proxy configuration in
    admin / tool / log / store / xapi / vendor / rusticisoftware / tincan / src / RemoteLRS.php
    by removing the automatic configuration:
    35 // protected $ proxy;
    Add :
    87 // this is here for some proxy handling
    88 'proxy' => '192.168.xxx.xxx:8080',
    and disable:
    / *
    106 if (isset ($ this-> proxy)) {
    107 $ http ['proxy'] = $ this-> proxy;
    * /
    In this way, xAPI will also work for Tincan content
1 2 3
Please login to post comments