在 Spring 中访问 Header 中的 logstash-logback 中的密钥 JSON 格式的引导编码
Accessing Request Header keys in logstash-logback in Spring Boot encoding in JSON format
我的用例是我需要在 spring 启动应用程序中打印 tomcat 服务器的访问日志。
日志应采用带有自定义字段名称的 JSON 格式。
像这样:
{
"_type": "access",
"_timestamp": "2020-12-14 09:04:51.124",
"_url":"/api/v2/activities/search",
"_method": "GET",
"_response_code": 200,
"_processing_time_in_ms":0.004,
"referer":"https://google.com",
"user_agent":"XYZ",
"_level": "info
}
现在我在 logback.xml 中使用 net.logstash.logback.encoder.AccessEventCompositeJsonEncoder 编码器附加到控制台。
我已经成功获得了其他字段的值,例如 _response_code : "%statsCode 通过这样做。
但是,如何在我的自定义 json object 中直接从 request_headers object 访问 referer?
使用logstash-logback-encoder's pattern provider along with logback's conversion word for request headers(%i
或%header
)。
logstash-logback-encoder 的 README.md(上面链接)中给出的示例展示了如何做到这一点。复制在这里供参考...
<encoder class="net.logstash.logback.encoder.AccessEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
{
"custom_constant": "123",
"tags": ["one", "two"],
"remote_ip": "%a",
"status_code": "%s",
"elapsed_time": "%D",
"user_agent": "%i{User-Agent}",
"accept": "%i{Accept}",
"referer": "%i{Referer}",
"session": "%requestCookie{JSESSIONID}",
...
}
</pattern>
</pattern>
</providers>
</encoder>
我的用例是我需要在 spring 启动应用程序中打印 tomcat 服务器的访问日志。 日志应采用带有自定义字段名称的 JSON 格式。 像这样:
{
"_type": "access",
"_timestamp": "2020-12-14 09:04:51.124",
"_url":"/api/v2/activities/search",
"_method": "GET",
"_response_code": 200,
"_processing_time_in_ms":0.004,
"referer":"https://google.com",
"user_agent":"XYZ",
"_level": "info
}
现在我在 logback.xml 中使用 net.logstash.logback.encoder.AccessEventCompositeJsonEncoder 编码器附加到控制台。
我已经成功获得了其他字段的值,例如 _response_code : "%statsCode 通过这样做。
但是,如何在我的自定义 json object 中直接从 request_headers object 访问 referer?
使用logstash-logback-encoder's pattern provider along with logback's conversion word for request headers(%i
或%header
)。
logstash-logback-encoder 的 README.md(上面链接)中给出的示例展示了如何做到这一点。复制在这里供参考...
<encoder class="net.logstash.logback.encoder.AccessEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
{
"custom_constant": "123",
"tags": ["one", "two"],
"remote_ip": "%a",
"status_code": "%s",
"elapsed_time": "%D",
"user_agent": "%i{User-Agent}",
"accept": "%i{Accept}",
"referer": "%i{Referer}",
"session": "%requestCookie{JSESSIONID}",
...
}
</pattern>
</pattern>
</providers>
</encoder>