55. Tracing

Tracing is automatically enabled for all HTTP requests. You can view the trace endpoint and obtain basic information about the last 100 requests. The following listing shows sample output:

[{
	"timestamp": 1394343677415,
	"info": {
		"method": "GET",
		"path": "/trace",
		"headers": {
			"request": {
				"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
				"Connection": "keep-alive",
				"Accept-Encoding": "gzip, deflate",
				"User-Agent": "Mozilla/5.0 Gecko/Firefox",
				"Accept-Language": "en-US,en;q=0.5",
				"Cookie": "_ga=GA1.1.827067509.1390890128; ..."
				"Authorization": "Basic ...",
				"Host": "localhost:8080"
			},
			"response": {
				"Strict-Transport-Security": "max-age=31536000 ; includeSubDomains",
				"X-Application-Context": "application:8080",
				"Content-Type": "application/json;charset=UTF-8",
				"status": "200"
			}
		}
	}
},{
	"timestamp": 1394343684465,
	...
}]

By default, the trace includes the following information:

NameDescription

Request Headers

Headers from the request.

Response Headers

Headers from the response.

Cookies

Cookie from request headers and Set-Cookie from response headers.

Errors

The error attributes (if any).

Time Taken

The time taken to service the request in milliseconds.

55.1 Custom tracing

If you need to trace additional events, you can inject a TraceRepository into your Spring beans. The add method accepts a single Map structure that is converted to JSON and logged.

By default, an InMemoryTraceRepository that stores the last 100 events is used. If you need to expand the capacity, you can define your own instance of the InMemoryTraceRepository bean. You can also create your own alternative TraceRepository implementation.