Logstore xAPI

Log storage ::: logstore_xapi
Maintained by David Pesce
Logstore xAPI captures Moodle activity and sends it to a Learning Record Store (LRS) as xAPI (Tin Can) statements. Once configured, events like course views, quiz attempts, assignment submissions, and forum posts are automatically recorded in your LRS — no changes to your courses required.
Latest release:
947 sites
315 downloads
53 fans
Current versions available: 2

No support in the comments section on this page! See below for bug reports and support.

Usage

  1. Install the plugin and navigate to Site administration > Plugins > Logging > Logstore xAPI.
  2. Enter your LRS endpoint, credentials, and select which events to track.
  3. Enable the logstore under Site administration > Plugins > Logging > Manage log stores.
  4. Moodle events are batched and sent to your LRS via a scheduled task.

Supported Events

Over 90 Moodle events are supported out of the box, covering core activities (quiz, assign, forum, SCORM, feedback, workshop, and more) as well as third-party plugins like Face-to-face and Questionnaire.

Documentation

Full documentation is available on the https://github.com/davidpesce/moodle-logstore_xapi/wiki.

Bug Reports & Support

Please report issues and feature requests on https://github.com/davidpesce/moodle-logstore_xapi/issues.

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 Moodle LMS and Learning Record Store (LRS).

Screenshots

Screenshot #0
Screenshot #1
Screenshot #2
Screenshot #3
Screenshot #4

Contributors

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

Comments

Show comments
  • Dey Bendifallah
    Fri, 20 July 2018, 1:57 PM
    Hi Ryan,
    VENDOR folder is empty in the new zip file. Is old folder unchanged?
    Thanks
    Dey
  • Ryan Smith
    Fri, 20 July 2018, 6:00 PM
    Hi Dey, my apologies been trying to fix the auto-release and accidentally released a local zip file without the vendor. Please try again.
  • Dey Bendifallah
    Fri, 20 July 2018, 6:05 PM
    Thank you Ryan for this quick fix and for your great work.
  • Peter de Jong
    Wed, 8 Aug 2018, 3:17 AM
    Hi Ryan,
    For some reason my plugin is not sending ANYTHING (as far as I can tell) to the Watershed LRS. My Activity Provider is correct because Tin Can Launch works with it. Can you please help me debug, or what could be the issue? Thank you.
  • siddharth jain
    Thu, 14 Nov 2019, 2:38 AM
    Hi Ryan and everyone,
    I am working behind institute proxy and trying to use this plugin in Moodle but no data is being transmitted to Learning Locker. I can see in the database that the table mdl_logstore_xapi_log is capturing events. I have also tried to send statements to Learning Locker directly which works. I followed the steps available in the website of h2tlabs. Please guide me.
  • Emmanuel Remy
    Mon, 9 Dec 2019, 1:56 PM
    Hi everyone
    Have you planned to emit events for badges issuing?
    Thanks
  • David Pesce
    Tue, 10 Dec 2019, 10:04 AM
    Hello Emmanuel - we have been maintaining the plugin via Github because Moodle doesn't allow automatic commits to the plugin site. We currently do not have badging events translating to xAPI statements, but we do have instructions on how to add new events. Feel free to submit it as a new issue and maybe even submit a PR if you feel comfortable. Thanks for your interest!
  • kl w
    Tue, 1 June 2021, 2:52 PM

    Hello, i have issue .please help me. thanks


    sudo php /var/www/html/moodle/admin/tool/task/cli/schedule_task.php --execute=\\logstore_xapi\\task\\emit_task --showdebugging
    Execute scheduled task: Emit records to LRS (logstore_xapi\task\emit_task)
    ++ Failed load batch (298 events)
    ++
    * line 89 of /admin/tool/log/store/xapi/classes/log/store.php: call to debugging()
    * line 33 of /admin/tool/log/store/xapi/src/loader/utils/load_batch.php: call to logstore_xapi\log\store->logstore_xapi\log\{closure}()
    * line 26 of /admin/tool/log/store/xapi/src/loader/utils/load_in_batches.php: call to src\loader\utils\load_batch()
    * line ? of unknownfile: call to src\loader\utils\{closure}()
    * line 28 of /admin/tool/log/store/xapi/src/loader/utils/load_in_batches.php: call to array_reduce()
    * line 56 of /admin/tool/log/store/xapi/src/loader/moodle_curl_lrs.php: call to src\loader\utils\load_in_batches()
    * line 24 of /admin/tool/log/store/xapi/src/loader/handler.php: call to src\loader\moodle_curl_lrs\load()
    * line 36 of /admin/tool/log/store/xapi/src/handler.php: call to src\loader\handler()
    * line 138 of /admin/tool/log/store/xapi/classes/log/store.php: call to src\handler()
    * line 96 of /admin/tool/log/store/xapi/classes/task/emit_task.php: call to logstore_xapi\log\store->process_events()
    * line 157 of /admin/tool/task/cli/schedule_task.php: call to logstore_xapi\task\emit_task->execute()
    ++ #0 /var/www/html/moodle/admin/tool/log/store/xapi/src/loader/utils/load_batch.php(27): src\loader\moodle_curl_lrs\{closure}(Array, Array)
    #1 /var/www/html/moodle/admin/tool/log/store/xapi/src/loader/utils/load_in_batches.php(26): src\loader\utils\load_batch(Array, Array, Object(Closure))
    #2 [internal function]: src\loader\utils\{closure}(Array, Array)
    #3 /var/www/html/moodle/admin/tool/log/store/xapi/src/loader/utils/load_in_batches.php(28): array_reduce(Array, Object(Closure), Array)
    #4 /var/www/html/moodle/admin/tool/log/store/xapi/src/loader/moodle_curl_lrs.php(56): src\loader\utils\load_in_batches(Array, Array, Object(Closure))
    #5 /var/www/html/moodle/admin/tool/log/store/xapi/src/loader/handler.php(24): src\loader\moodle_curl_lrs\load(Array, Array)
    #6 /var/www/html/moodle/admin/tool/log/store/xapi/src/handler.php(36): src\loader\handler(Array, Array)
    #7 /var/www/html/moodle/admin/tool/log/store/xapi/classes/log/store.php(138): src\handler(Array, Array)
    #8 /var/www/html/moodle/admin/tool/log/store/xapi/classes/task/emit_task.php(96): logstore_xapi\log\store->process_events(Array)
    #9 /var/www/html/moodle/admin/tool/task/cli/schedule_task.php(157): logstore_xapi\task\emit_task->execute()
    #10 {main} ++
    * line 89 of /admin/tool/log/store/xapi/classes/log/store.php: call to debugging()
    * line 34 of /admin/tool/log/store/xapi/src/loader/utils/load_batch.php: call to logstore_xapi\log\store->logstore_xapi\log\{closure}()
    * line 26 of /admin/tool/log/store/xapi/src/loader/utils/load_in_batches.php: call to src\loader\utils\load_batch()
    * line ? of unknownfile: call to src\loader\utils\{closure}()
    * line 28 of /admin/tool/log/store/xapi/src/loader/utils/load_in_batches.php: call to array_reduce()
    * line 56 of /admin/tool/log/store/xapi/src/loader/moodle_curl_lrs.php: call to src\loader\utils\load_in_batches()
    * line 24 of /admin/tool/log/store/xapi/src/loader/handler.php: call to src\loader\moodle_curl_lrs\load()
    * line 36 of /admin/tool/log/store/xapi/src/handler.php: call to src\loader\handler()
    * line 138 of /admin/tool/log/store/xapi/classes/log/store.php: call to src\handler()
    * line 96 of /admin/tool/log/store/xapi/classes/task/emit_task.php: call to logstore_xapi\log\store->process_events()
    * line 157 of /admin/tool/task/cli/schedule_task.php: call to logstore_xapi\task\emit_task->execute()
    298 event(s) have failed to send to the LRS.

  • Andrea Basto
    Fri, 4 Mar 2022, 6:05 PM
    Does this plugin run correctly with version 3.9 too ?
  • Tien Nguyen
    Wed, 28 Sept 2022, 9:44 AM
    Hi, this is a really awesome plugin. Does it work for moodle 4.0?
  • David Pesce
    Sun, 2 Oct 2022, 7:58 PM
    Hello Tien - the plugin does work with 4.0, but it needs some updates in order to work perfectly. Plans are in the works to migrate this repository to another developer who can update and maintain it more frequently.
  • Sean Rugge
    Mon, 27 Feb 2023, 9:39 PM
    This plugin is very useful. Are there any plans to include quiz response data and h5p activity response data in xAPI statements?
  • Laura Cray
    Wed, 30 Oct 2024, 7:00 PM
    Great plugin. One question - is it possible to get an answered statement for the Choice and Lesson activities as well?
  • Ivan Oliveira
    Wed, 29 Jan 2025, 6:30 PM
    Moodle version 4.5 is not compatible with this plugin anymore. Any news on updating the plugin or an alternative method to connect to a Learning Record Store.
  • Sean Rugge
    Mon, 10 Nov 2025, 11:10 PM
    Are there any plans to release a plugin version compatible with Moodle 5.0 and 5.1?
1 2 3 4
Please login to post comments