diff --git a/pom.xml b/pom.xml
index 07cdb85..269b726 100644
--- a/pom.xml
+++ b/pom.xml
@@ -123,6 +123,11 @@
${jackson-databind.version}
+
+ org.apache.logging.log4j
+ log4j-api
+ ${log4j.version}
+
org.apache.logging.log4j
log4j-core
diff --git a/src/main/groovy/com/tomtom/http/RequestBuilder.groovy b/src/main/groovy/com/tomtom/http/RequestBuilder.groovy
index 14fdddc..f4dfa25 100644
--- a/src/main/groovy/com/tomtom/http/RequestBuilder.groovy
+++ b/src/main/groovy/com/tomtom/http/RequestBuilder.groovy
@@ -25,12 +25,15 @@ import org.apache.hc.core5.http.ClassicHttpRequest
import org.apache.hc.core5.http.HttpEntity
import org.apache.hc.core5.http.io.entity.StringEntity
import org.apache.hc.core5.http.message.BasicHeader
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
import java.util.function.Function
@PackageScope
class RequestBuilder {
+ private static Logger logger = LogManager.getLogger(HttpClient)
private ObjectMapper mapper = new ObjectMapper()
private String baseUrl
private Map defaultHeaders
@@ -43,18 +46,21 @@ class RequestBuilder {
if (query) url = addQuery url, query
def request = requestFor method, url
+ logger.info("${request.method} ${url}")
if (defaultHeaders) addHeaders request, defaultHeaders
-
def headers = properties['headers'] as Map
if (headers) addHeaders request, headers
+ if (request.headers) logger.info(" headers: ${request.headers}")
def body = properties['body']
if (body)
- if (body instanceof File)
+ if (body instanceof File) {
+ logger.info(" body: <${body} file content omitted>")
addFile request, body
- else {
+ } else {
def serialized = serialize body
+ logger.info(" body: ${serialized}")
addBody request, serialized
}
diff --git a/src/main/groovy/com/tomtom/http/ResponseParser.groovy b/src/main/groovy/com/tomtom/http/ResponseParser.groovy
index 2293089..463ce9f 100644
--- a/src/main/groovy/com/tomtom/http/ResponseParser.groovy
+++ b/src/main/groovy/com/tomtom/http/ResponseParser.groovy
@@ -24,13 +24,17 @@ import groovy.transform.PackageScope
import org.apache.hc.core5.http.HttpEntity
import org.apache.hc.core5.http.HttpResponse
import org.apache.hc.core5.http.io.entity.EntityUtils
+import org.apache.logging.log4j.LogManager
+import org.apache.logging.log4j.Logger
@PackageScope
class ResponseParser {
+ private static Logger logger = LogManager.getLogger(HttpClient)
private mapper = new ObjectMapper()
Response parse(HttpResponse response, Class type, Class subtype) {
+ logger.info "=> response: ${response.code}"
new Response(
statusCode: response.code,
headers: headersOf(response) as Map>,
@@ -44,13 +48,14 @@ class ResponseParser {
private readEntity(HttpEntity entity, Class rawType, Class subtype) {
def content = EntityUtils.toString entity
+ if (content) logger.info " body: ${content}"
if (rawType) {
def type = subtype ?
typeOf(rawType, subtype) : typeOf(rawType)
try {
return mapper.readValue(content, type)
} catch (Exception e) {
- println "Failed to deserialize $content to $rawType due to $e.message, defaulting to string"
+ logger.warn "Failed to deserialize $content to $rawType due to $e.message, defaulting to string"
}
}
content
@@ -73,9 +78,12 @@ class ResponseParser {
private static headersOf(HttpResponse response) {
def headers = response.headers
- headers ? headers
- .groupBy { it.name }
- .collectEntries { [(it.key): it.value.value] } : [:]
+ if (headers) {
+ logger.info " headers: ${response.headers}"
+ headers
+ .groupBy { it.name }
+ .collectEntries { [(it.key): it.value.value] }
+ } else [:]
}
}