390 lines
7.2 KiB
ReStructuredText
390 lines
7.2 KiB
ReStructuredText
#############
|
|
Tracking Logs
|
|
#############
|
|
|
|
* Tracking logs are made available as separate tar files on S3 in the course-data bucket.
|
|
* They are represented as JSON files that catalog all user interactions with the site.
|
|
* To avoid filename collisions the tracking logs are organized by server name, where each directory corresponds to a server where they were stored.
|
|
|
|
*************
|
|
Common Fields
|
|
*************
|
|
|
|
.. list-table::
|
|
:widths: 10 40 10 25
|
|
:header-rows: 1
|
|
|
|
* - field
|
|
- details
|
|
- type
|
|
- values/format
|
|
* - `username`
|
|
- username of the user who triggered the event, empty string for anonymous events (not logged in)
|
|
- string
|
|
-
|
|
* - `session`
|
|
- key identifying the user's session, may be undefined
|
|
- string
|
|
- 32 digits key
|
|
* - `time`
|
|
- GMT time the event was triggered
|
|
- string
|
|
- `YYYY-MM-DDThh:mm:ss.xxxxxx`
|
|
* - `ip`
|
|
- user ip address
|
|
- string
|
|
-
|
|
* - `agent`
|
|
- users browser agent string
|
|
- string
|
|
-
|
|
* - `page`
|
|
- page the user was visiting when the event was generated
|
|
- string
|
|
- `$URL`
|
|
* - event_source
|
|
- event source
|
|
- string
|
|
- `browser`, `server`
|
|
* - `event_type`
|
|
- type of event triggered, values depends on `event_source`
|
|
- string
|
|
- *more details listed below*
|
|
* - `event`
|
|
- specifics of the event (dependenty of the event_type)
|
|
- string/json
|
|
- *the event string may encode a JSON record*
|
|
|
|
|
|
*************
|
|
Event Sources
|
|
*************
|
|
|
|
The `event_source` field identifies whether the event originated in the browser (via javascript) or on the server (during the processing of a request).
|
|
|
|
Server Events
|
|
=============
|
|
|
|
.. list-table::
|
|
:widths: 20 10 10 10 50
|
|
:header-rows: 1
|
|
|
|
* - event_type
|
|
- event fields
|
|
- type
|
|
- values/format
|
|
- details
|
|
* - `show_answer`
|
|
- `problem_id`
|
|
- string
|
|
-
|
|
- id of the problem being shown. Ex: `i4x://MITx/6.00x/problem/L15:L15_Problem_2`
|
|
* - `save_problem_check`
|
|
- `problem_id`
|
|
- string
|
|
-
|
|
- id of the problem being shown
|
|
* -
|
|
- `success`
|
|
- string
|
|
- correct, incorrect
|
|
- whether the problem was correct
|
|
* -
|
|
- `attempts`
|
|
- integer
|
|
- number of attempts
|
|
-
|
|
* -
|
|
- `correct_map`
|
|
- string/json
|
|
-
|
|
- see details below
|
|
* -
|
|
- `state`
|
|
- string/json
|
|
-
|
|
- current problem state
|
|
* -
|
|
- `answers`
|
|
- string/json
|
|
-
|
|
- students answers
|
|
* -
|
|
- `reset_problem`
|
|
- problem_id
|
|
- string
|
|
- id of the problem being shown
|
|
|
|
|
|
`correct_map` details
|
|
---------------------
|
|
|
|
.. list-table::
|
|
:widths: 15 10 15 10
|
|
:header-rows: 1
|
|
|
|
* - correct_map fields
|
|
- type
|
|
- values/format
|
|
- null allowed?
|
|
* - hint
|
|
- string
|
|
-
|
|
-
|
|
* - hintmode
|
|
- boolean
|
|
-
|
|
- yes
|
|
* - correctness
|
|
- string
|
|
- correct, incorrect
|
|
-
|
|
* - npoints
|
|
- integer
|
|
-
|
|
- yes
|
|
* - msg
|
|
- string
|
|
-
|
|
-
|
|
* - queuestate
|
|
- string/json
|
|
- keys: key, time
|
|
-
|
|
|
|
|
|
Browser Events
|
|
==============
|
|
|
|
.. list-table::
|
|
:widths: 10 10 8 12 20 10
|
|
:header-rows: 1
|
|
|
|
* - event_type
|
|
- fields
|
|
- type
|
|
- values/format
|
|
- details
|
|
- example
|
|
* - `book`
|
|
- `type`
|
|
- string
|
|
- `gotopage`
|
|
-
|
|
-
|
|
* -
|
|
- `old`
|
|
- integer
|
|
- `$PAGE`
|
|
- from page number
|
|
- `2`
|
|
* -
|
|
- `new`
|
|
- integer
|
|
- `$PAGE`
|
|
- to page number
|
|
- `25`
|
|
* - `book`
|
|
- `type`
|
|
- string
|
|
- `nextpage`
|
|
-
|
|
-
|
|
* -
|
|
- new
|
|
- integer
|
|
- `$PAGE`
|
|
- next page number
|
|
- `10`
|
|
* - `page_close`
|
|
- *empty*
|
|
- string
|
|
-
|
|
- 'page' field indicates which page was being closed
|
|
-
|
|
* - play_video
|
|
- `id`
|
|
- string
|
|
-
|
|
- edX id of the video being watched
|
|
- `i4x-HarvardX-PH207x-video-Simple_Random_Sample`
|
|
* -
|
|
- code
|
|
- string
|
|
-
|
|
- youtube id of the video being watched
|
|
- `FU3fCJNs94Y`
|
|
* -
|
|
- `currentTime`
|
|
- float
|
|
-
|
|
- time the video was paused at, in seconds
|
|
- `1.264`
|
|
* -
|
|
- `speed`
|
|
- string
|
|
- `0.75, 1.0, 1.25, 1.50`
|
|
- video speed being played
|
|
- `"1.0"`
|
|
* - `pause_video`
|
|
- `id`
|
|
- string
|
|
-
|
|
- edX id of the video being watched
|
|
-
|
|
* -
|
|
- `code`
|
|
- string
|
|
-
|
|
- youtube id of the video being watched
|
|
-
|
|
* -
|
|
- `currentTime`
|
|
- float
|
|
-
|
|
- time the video was paused at
|
|
-
|
|
* -
|
|
- `speed`
|
|
- string
|
|
- `0.75, 1.0, 1.25, 1.50`
|
|
- video speed being played
|
|
-
|
|
* - `problem_check`
|
|
- *none*
|
|
- string
|
|
-
|
|
- event field contains the values of all input fields from the problem being checked (in the style of GET parameters (`key=value&key=value`))
|
|
-
|
|
* - `problem_show`
|
|
- `problem`
|
|
- string
|
|
-
|
|
- id of the problem being checked
|
|
-
|
|
* - `seq_goto`
|
|
- `id`
|
|
- string
|
|
-
|
|
- edX id of the sequence
|
|
-
|
|
* -
|
|
- `old`
|
|
- integer
|
|
-
|
|
- sequence element being jumped from
|
|
- `3`
|
|
* -
|
|
- `new`
|
|
- integer
|
|
-
|
|
- sequence element being jumped to
|
|
- `5`
|
|
* - `seq_next`
|
|
- `id`
|
|
- string
|
|
-
|
|
- edX id of the sequence
|
|
-
|
|
* -
|
|
- `old`
|
|
- integer
|
|
-
|
|
- sequence element being jumped from
|
|
- `4`
|
|
* -
|
|
- `new`
|
|
- integer
|
|
-
|
|
- sequence element being jumped to
|
|
- `6`
|
|
* - `rubric_select`
|
|
- `location`
|
|
- string
|
|
-
|
|
- location of the rubric's problem
|
|
- `i4x://MITx/6.00x/problem/L15:L15_Problem_2`
|
|
* -
|
|
- `category`
|
|
- integer
|
|
-
|
|
- category number of the rubric selection
|
|
-
|
|
* -
|
|
- `value`
|
|
- integer
|
|
-
|
|
- value selected within the category
|
|
-
|
|
* - `(oe / peer_grading / staff_grading)`
|
|
`_show_problem`
|
|
- `location`
|
|
- string
|
|
-
|
|
- the location of the problem whose prompt we're showing
|
|
-
|
|
* - `(oe / peer_grading / staff_grading)`
|
|
`_hide_problem`
|
|
- `location`
|
|
- string
|
|
-
|
|
- the location of the problem whose prompt we're hiding
|
|
-
|
|
* - `oe_show_full_feedback`
|
|
- *empty*
|
|
-
|
|
-
|
|
- the page where they're showing full feedback is already recorded
|
|
-
|
|
* - `oe_show_respond_to_feedback`
|
|
- *empty*
|
|
-
|
|
-
|
|
- the page where they're showing the feedback response form is already recorded
|
|
-
|
|
* - `oe_feedback_response_selected`
|
|
- `value`
|
|
- integer
|
|
-
|
|
- the value selected in the feedback response form
|
|
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|