Mole log specification
All log reports sent to the mole server and processed by the mole dashboard follow a common structure, that is, the Mole log specification.
Log object
The main log object where all the data is contained.
| Field | Type | Description | 
|---|---|---|
id | 
string | ID of the log, must not be present on the report but is on the retrieval | 
timestamp | 
string | Timestamp of the report | 
location | 
Location object | URL location where the error happened | 
action_state_history | 
Array of ActionState objects | An array with the pairs of action-state that lead to the error | 
error | 
Error object | Information about the error such as the line and the stacktrace | 
Location object
The location object contains all the information about the URL where the error happened.
| Field | Type | Description | 
|---|---|---|
host | 
string | Host of the page | 
href | 
string | Full URL of the page | 
hash | 
string | Hash of the page | 
pathname | 
string | Path name of the page | 
port | 
string | Port of the page | 
protocol | 
string | Protocol of the page | 
search | 
string | Search query of the page | 
Error object
The error object contains all the data of the error, which is the message and the stacktrace.
| Field | Type | Description | 
|---|---|---|
message | 
string | Message of the error | 
stacktrace | 
Array of StackTrace objects | Stacktrace of the error | 
Stacktrace object
The stacktrace object contains all the data of a stacktrace line.
| Field | Type | Description | 
|---|---|---|
function | 
string | Function of the stacktrace line | 
file | 
string | File of the stacktrace line | 
line | 
string | Line of the stacktrace line | 
column | 
string | Column of the stacktrace line | 
ActionState object
The ActionState object contains the pair of action and state.
| Field | Type | Describe | 
|---|---|---|
action | 
Arbitrary JSON Object | The action that happened in that entry | 
state | 
Arbitrary JSON Object | The state of the application at the moment the action happened | 
Example log
{
  "id": "55bb692e19ff303084000004",
  "timestamp": "Fri Nov 20 2015 13:55:06 GMT+0100 (CET)",
  "location": {
    "host": "fake.molejs.org",
    "href": "http://fake.molejs.org/app",
    "hash": "",
    "pathname": "/app",
    "port": "",
    "protocol": "http:",
    "search": ""
  },
  "error": {
    "message": "TypeError: undefined is not a function",
    "stacktrace": [
      {
        "function": "emit",
        "file": "events.js",
        "line": "107",
        "column": "17"
      },
      {
        "function": "EventEmitter.<anonymous>",
        "file": "index.js",
        "line": "170",
        "column": "9"
      },
      {
        "function": "EventEmitter.emit",
        "file": "events.js",
        "line": "107",
        "column": "17"
      },
      {
        "function": "ClientRequest.<anonymous>",
        "file": "index.js",
        "line": "50",
        "column": "7"
      }
    ]
  },
  "action_state_history": [
    {
      "action": {
        "type": "OPEN_PRODUCT",
        "product": 45,
      },
      "state": {
      }
    },
    {
      "action": {
        "type": "LOAD_PRODUCT",
        "product": 45
      },
      "state": {
        "currentProduct": 45
      }
    },
    {
      "action": {
        "type": "PRODUCT_LOADED"
      },
      "state": {
        "currentProduct": 45,
        "loading": true,
      }
    },
    {
      "action": {
        "type": "DISPLAY_PRODUCT"
      },
      "state": {
        "currentProduct": 45,
        "product": {
          "id": 45,
          "name": "Foo flowers",
          "image": "foo_flowers.jpg",
          "price": 34.45
        },
        "loading": false,
      }
    }
  ]
}