Moodle has a built-in powerful logging framework that is, as expected, fully customizable and extensible. The idea behind the logging mechanism is as follows:
A user performs an action that triggers an event. An example of this is a student who posts a reply on a forum.
The log manager monitors the event and then decides whether it will be logged or ignored. This is dictated by site-wide log manager settings.
For example, by default, there is no setting for not storing forum-related information, so data about who posted what in which forum thread is passed on.
The log manager sends the data to the log store plugin, which filters or enriches the information.
The passed on data might be enriched with the IP address and a timestamp.
Now, let's take a look at what happens when a user requests a report. An example of this is a report on student participation in course forums. This can be explained as follows:
The reporting...