MockMotor Log

MockMotor file log can be used to troubleshoot more complex issues, such as defects in MockMotor itself (as much as I try to avoid them).

Log Location

The log file is named mockmotor.log.0 (rotated to *.1 ... *.9) and, by default, is located in the logs/ directory under the data directory.

To change the log location, update config file mockmotor.config.xml file to point to the desired location then restart MockMotor.

The location can be relative to the data directory or absolute. Here, the location is set to be relative to the data directory, i.e. ./logs. The data directory itself (.) is set to the directory where MockMotor starts from:

<config xmlns="http://mockmotor.com/config">
    <dataDirectory>.</dataDirectory>
    ...
    <logsDirectory>logs</logsDirectory>
</config>

Log Structure

Test Requests

MockMotor logs the test requests performed by the client applications.

Each log entry contains:

  • HTTP method that was used
  • HTTP status MockMotor generated
  • Overall time the request took
  • Mock environment the request was routed to
  • Mock service the request was routed to
  • Mock response that matched the request
  • Request URI
2017-08-13 10:50:45.888 INFO HTTP DELETE 200     2ms [MockMotor SelfTest][REST][DELETE products] /SelfTest/REST/products/74755
2017-08-13 10:50:45.900 INFO HTTP    PUT 200     2ms [MockMotor SelfTest][REST][PUT products] /SelfTest/REST/products/74755
2017-08-13 10:50:45.913 INFO HTTP   POST 200     3ms [MockMotor SelfTest][REST][POST products] /SelfTest/REST/products
2017-08-13 10:50:45.925 INFO HTTP   POST 200     3ms [MockMotor SelfTest][REST][POST customers] /SelfTest/REST/customers
2017-08-13 10:50:46.070 INFO HTTP    PUT 201   136ms [MockMotor SelfTest][REST JSON][Has $rest everywhere even without relativeURI match] /SelfTest/RESTJSON/products/74755
2017-08-13 10:50:46.084 INFO HTTP    GET 200     5ms [MockMotor SelfTest][REST JSON][GET customer 12345] /SelfTest/RESTJSON/customers/12345
2017-08-13 10:50:46.099 INFO HTTP    GET 200     5ms [MockMotor SelfTest][REST JSON][GET Customer 12345 Orders Lineitem #1] /SelfTest/RESTJSON/customers/12345/orders/854/lineitems/1
2017-08-13 10:50:46.117 WARN Badly formatted multipart request
2017-08-13 10:50:46.125 INFO HTTP  PATCH 200     3ms [MockMotor SelfTest][HTTP][HTTP Properties XML] /SelfTest/HTTP/Properties
2017-08-13 10:50:46.142 INFO HTTP   POST 200     3ms [MockMotor SelfTest][HTTP][HTTP Properties XML (POST)] /SelfTest/HTTP/Properties
2017-08-13 10:50:46.165 INFO HTTP  PATCH 200     3ms [MockMotor SelfTest][HTTP][HTTP Properties XML] /SelfTest/HTTP/Properties?a=1&b=2
2017-08-13 10:50:46.196 SEVE Error executing matcher for response 86dd1ce5-715c-4ae1-9bdd-337f86d73c23 Match by Broken Javascript - 
ignored, moved on: sun.org.mozilla.javascript.internal.EvaluatorException: Unexpected end of file (#1) in  at line number 1
2017-08-13 10:50:46.199 INFO HTTP   POST 200    12ms [MockMotor SelfTest][JSON][http] /SelfTest/JSON/http?a=100&b=200&b=300
2017-08-13 10:50:46.229 INFO HTTP   POST 200    15ms [MockMotor SelfTest][MockMeta][Meta in Matcher (XQ)] /SelfTest/Meta/MockMetaInMatcher-XQ

Human Actions

MockMotor logs updating requests that are generated by the logged in users. The log entry contains the full name of the user that has performed the change:

2017-08-15 23:27:55.929 INFO Saved response PTE::OMF ProductConfiguration JSON::B1 ChangeService R3
2017-08-15 23:27:55.933 INFO HTTP   POST 200   114ms [PTE][OMF ProductConfiguration JSON][B1 ChangeService R3] (Vladimir Dyuzhev) /console/ajax/response

Read-only (HTTP GET) requests performed by users are not logged so that they do not clog the file.

API Requests

Updates performed via API are logged as well. Note that read-only requests via API are not logged.

2017-08-15 23:28:13.936 INFO HTTP   POST 200     6ms [MockMotor SelfTest Accounts][][] /console/api/account
2017-08-15 23:28:13.955 INFO HTTP DELETE 200     2ms [MockMotor SelfTest Accounts][][] /console/api/account?accid=052c95d6-63eb-471a-afc2-c0cbe94125f8

Errors

In case of unexpected errors MockMotor logs the error message, stacktrace and the request that caused the error:

2017-08-13 12:57:21.175 SEVE While executing response 'Selecting Account with JSONPath and not found' eb953e8c-9db2-4c96-9548-95ab1c83336b
com.rfctr.mockmotor.engine.MockMotorException: No accounts found with 
  variable var_a matching values 'null' computed as '$.var_abcd'
in response 'Selecting Account with JSONPath and not found'
    com.rfctr.mockmotor.responses.ResponseExecutor.matchAndExecuteResponse(ResponseExecutor.java:111)
    com.rfctr.mockmotor.engine.MockMotorRequestsHandler.handle(MockMotorRequestsHandler.java:188)
    ...
2017-08-13 12:57:21.175 SEVE Failed request {   "var_a":"01",   "other": {      "ban":"62363463"    }}