Server Access Log
Since v0.7 To manage aah server effectively it is necessary to know details about the request, response, processing time, client IP address, etc. aah provides the flexible and configurable server access log capabilities.
Access log processing handled in separate goroutine, it won’t stand in way.
Table of Contents
Supported Access Log flag
Log Flag | Description |
---|---|
clientip | Client IP address aka Remote IP address |
reqtime | Time of the request is received by server. Local time in default format RFC3339 or you can provide your format |
requrl | Relative request URL not including query string |
reqmethod | Request HTTP method |
reqproto | Request Protocol. For e.g: HTTP/1.1 , HTTP/2.0 |
reqid | Request ID if present otherwise value - is logged. Refer to config request.id.header in the aah.conf |
reqhdr:<header_name> | Request header, if present otherwise value - is logged |
querystr | Request query string if present otherwise value - is logged |
resstatus | Response Status Code |
ressize | Bytes sent, excluding response HTTP headers, otherwise value - is logged; if no bytes were sent |
reshdr:<header_name> | Response header, if present otherwise value - is logged |
restime | Request processing time in milliseconds . The time elapsed between the request received by server and the last bytes were written on the wire by server |
custom | Add non-space string into log string |
Default access log pattern
%clientip %custom:- %reqtime %reqmethod %requrl %reqproto %resstatus %ressize %restime %reqhdr:referer
Sample Server Access Log of default pattern
::1 - 2017-07-21T14:56:15-07:00 GET / HTTP/2.0 200 12735 0.7020 "https://aahframework.org/"
::1 - 2017-07-21T14:56:15-07:00 GET /assets/css/aah-f2f8e6e.css HTTP/2.0 200 7408 0.3377 "https://aahframework.org/"
::1 - 2017-07-21T14:56:15-07:00 GET /assets/js/aah-f2f8e6e.js HTTP/2.0 200 522 0.2688 "https://aahframework.org/"
::1 - 2017-07-21T14:56:15-07:00 GET /assets/css/bootstrap.min.css HTTP/2.0 200 125523 4.1035 "https://aahframework.org/"
::1 - 2017-07-21T14:56:15-07:00 GET /assets/img/aah-logo-64x64.png HTTP/2.0 200 2404 0.2033 "https://aahframework.org/"
::1 - 2017-07-21T14:56:15-07:00 GET /assets/js/ie10-viewport-bug-workaround.js HTTP/2.0 200 651 0.2062 "https://aahframework.org/"
::1 - 2017-07-21T14:56:15-07:00 GET /assets/fonts/timeburnerbold.ttf HTTP/2.0 200 78170 1.4987 "https://aahframework.org/assets/css/aah-f2f8e6e.css"
Access Log Configuration
access_log { ... }
configuration goes under config section server { ... }
in the aah.conf
..
# -----------------------------------------------------------------------------
# Access Log configuration
# To manage aah server effectively it is necessary to know details about the
# request, response, processing time, client IP address, etc. aah provides
# the configurable access log capabilities.
#
# Doc: https://docs.aahframework.org/server-access-log.html
# -----------------------------------------------------------------------------
access_log {
# Enabling server access log
# Default value is `false`
enable = true
# Absolute path to access log file or relative path.
# Default location is application logs directory
#file = "{{ .AppName }}-access.log"
# Default server access log pattern
#pattern = "%clientip %custom:- %reqtime %reqmethod %requrl %reqproto %resstatus %ressize %restime %reqhdr:referer"
# Access Log channel buffer size
# Default value is `500`
#channel_buffer_size = 500
# Include static files access log too.
# Default value is `true`.
#static_file = false
}
Examples
Added respective flag into pattern config.
Logging User-Agent
// header name in-casesensitive
reqhdr:User-Agent
# OR
reqhdr:user-agent
Logging Referer URL
// header name in-casesensitive
reqhdr:referer