54. Tracing

将为所有 HTTP 请求自动启用跟踪。您可以查看trace端点并获取有关最近 100 个请求的基本信息:

[{
    "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,
    ...
}]

默认情况下,跟踪中包括以下内容:

NameDescription
Request Headers请求的 Headers。
Response HeadersHeaders 来自回应。
Cookies来自请求 Headers 的Cookie和来自响应 Headers 的Set-Cookie
Errors错误属性(如果有)。
Time Taken服务请求所花费的时间(以毫秒为单位)。

54.1 自定义跟踪

如果您需要跟踪其他事件,可以将TraceRepository注入到 Spring bean 中。 add方法接受一个Map结构,该结构将转换为 JSON 并记录下来。

默认情况下,将使用InMemoryTraceRepository来存储最近的 100 个事件。如果需要扩展容量,则可以定义自己的InMemoryTraceRepository bean 实例。如果需要,您还可以创建自己的替代TraceRepository实现。