Dump Request & Response in aah
aah provides easy to use dump/log HTTP request and response into log file, just enable it.
Its not just a dump, Log is readable and very helpful for your Debugging
. You can control dump log by headers, request body, response body, etc.
Note:
- It is not recommended to enable 'Request and Response dump' in
production
profile. It may be impact your application performance. - Keep an eye on
disk usage
when you enable aah server dump. - Dump log is not applicable for Static files delivery and non-readable content types.
Server Dump Log Configuration
Add dump_log
section under the config server
section in the aah.conf
.
server {
# ...
# -------------------------------------------------------
# Dump Request & Response Details
# Such as URL, Proto, Headers, Body, etc.
# Note: Dump is not applicable for Static Files delivery.
# Doc: https://docs.aahframework.org/server-dump-log.html
# -------------------------------------------------------
dump_log {
# Default value is `false`.
enable = true
# Absolute path to dump log file or relative path.
# Default location is application logs directory
#file = "{{ .AppName }}-dump.log"
# Log Request body into dump log. aah dumps body for JSON, XML, Form
# HTML and Plain Text content types.
# Default value is `false`.
#request_body = true
# Log Request body into dump log. aah dumps body for JSON, XML, Form
# HTML, and Plain Text content types.
# Default value is `false`.
#response_body = true
}
# ...
}
Sample Dump of REST API tutorial app
This is just a sample dump log from REST API tutorial.
=======================================================================
URI: http://localhost:8080/v1/posts
METHOD: POST
PROTO: HTTP/1.1
HEADERS:
Accept: */*
Accept-Encoding: gzip, deflate
Cache-Control: no-cache
Content-Length: 81
Content-Type: application/json
Postman-Token: aa278c41-2946-4cab-b4d5-746424a56b75
User-Agent: PostmanRuntime/6.3.2
X-Forwarded-For: ::1
X-Request-Id: 59c56cf09bf234552e9218f4
BODY:
{
"title": "Hey, my first post",
"body": "\u003cp\u003eThis is my first blog post\u003c/p\u003e"
}
-----------------------------------------------------------------------
STATUS: 201 Created
BYTES WRITTEN: 15
HEADERS:
Content-Type: application/json; charset=utf-8
Server: aah-go-server
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Request-Id: 59c56cf09bf234552e9218f4
BODY:
{
"id": 2
}
=======================================================================
URI: http://localhost:8080/v1/posts
METHOD: GET
PROTO: HTTP/1.1
HEADERS:
Accept: */*
Accept-Encoding: gzip, deflate
Cache-Control: no-cache
Content-Type: application/json
Postman-Token: a56e8af3-19e8-47db-b0c3-9baa68dbe92b
User-Agent: PostmanRuntime/6.3.2
X-Forwarded-For: ::1
X-Request-Id: 59c56cf19bf234552e9218f5
-----------------------------------------------------------------------
STATUS: 200 OK
BYTES WRITTEN: 565
HEADERS:
Content-Type: application/json; charset=utf-8
Server: aah-go-server
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Request-Id: 59c56cf19bf234552e9218f5
BODY:
{
"posts": [
{
"id": 1,
"title": "Hey, my first post",
"body": "\u003cp\u003eThis is my first blog post\u003c/p\u003e",
"created_at": "2017-09-22T13:05:01-07:00",
"updated_at": "2017-09-22T13:05:01-07:00"
},
{
"id": 2,
"title": "Hey, my first post",
"body": "\u003cp\u003eThis is my first blog post\u003c/p\u003e",
"created_at": "2017-09-22T13:05:04-07:00",
"updated_at": "2017-09-22T13:05:04-07:00"
}
]
}
=======================================================================