Apache by default logs incoming HTTP requests but not everything about the request is logged. Below is an example request, Apache's CustomLog directive and the correspnding log that it captures:
GET /apache/log-post?field01=value01&field02=value02 HTTP/1.1 Host: simplified.guide Content-Type: application/x-www-form-urlencoded
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
52.46.36.182 - - [30/Jan/2020:18:04:53 +0000] "GET /apache/log-post?field01=value01&field02=value02 HTTP/1.1" 200 13375 "-" "Amazon CloudFront"
HTTP GET requests consist of the URL and query string combination (/apache/log-post?field01=value01&field02=value02 in the above example) and is fully logged. POST requests however sends the data in the request body while only the URL (/apache/log-post) is logged and the request body is not.
This means that in order to fully log a POST request, you'll need to also log the body of an HTTP request.
$ sudo a2enmod dump_io # Ubuntu and Debian Enabling module dump_io. To activate the new configuration, you need to run: systemctl restart apache2 $ sudo a2enmod dumpio # SUSE
Options | Debian, Ubuntu | openSUSE and SLES | Fedora Core, CentOS, RHEL | macOS | homebrew | xampp |
---|---|---|---|---|---|---|
a2enmod support | yes | yes | no | no | no | no |
Modules to install | none | |||||
Module name | n/a | dumpio | ||||
Loadmodule directive | n/a | LoadModule dumpio_module <module_locations>/mod_dumpio.so |
$ sudo vi /etc/apache2/httpd.conf
Configure the below steps/lines in a VirtualHost directive to apply the logging configuration only to a specific VirtualHost configuration.
DumpIOInput On DumpIOOutput On
LogLevel dumpio:trace7
$ curl -XPOST --data "field01=value01&field02=value02" 127.0.0.1
$ sudo grep field01 /var/log/apache2/error.log [Sun Feb 02 01:46:13.062838 2020] [dumpio:trace7] [pid 21080] mod_dumpio.c(100): [client 127.0.0.1:47386] mod_dumpio: dumpio_in (data-HEAP): field01=value01&field02=value02
Guide compatibility:
Operating System |
---|
Ubuntu 16.04 LTS (Xenial Xerus) |
Ubuntu 16.10 (Yakkety Yak) |
Ubuntu 17.04 (Zesty Zapus) |
Ubuntu 17.10 (Artful Aardvark) |
Ubuntu 18.04 LTS (Bionic Beaver) |
Ubuntu 18.10 (Cosmic Cuttlefish) |
Ubuntu 19.04 (Disco Dingo) |
Comment anonymously. Login not required.