diff --git a/ansible/roles/aodh/templates/wsgi-aodh.conf.j2 b/ansible/roles/aodh/templates/wsgi-aodh.conf.j2
index 95fe8462b012c905c124c9fa0d167686f5ea2c6f..33294f3a8af4145bc99a2e76f688b2ebda65674a 100644
--- a/ansible/roles/aodh/templates/wsgi-aodh.conf.j2
+++ b/ansible/roles/aodh/templates/wsgi-aodh.conf.j2
@@ -19,7 +19,8 @@ TraceEnable off
   ## Logging
   ErrorLog "/var/log/kolla/aodh/aodh_wsgi_error.log"
   ServerSignature Off
-  CustomLog "/var/log/kolla/aodh/aodh_wsgi_access.log" combined
+  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
+  CustomLog "/var/log/kolla/aodh/aodh_wsgi_access.log" logformat
   WSGIApplicationGroup %{GLOBAL}
   WSGIDaemonProcess aodh group=aodh processes={{ openstack_service_workers }} threads=1 user=aodh python-path={{ python_path }}
   WSGIProcessGroup aodh
diff --git a/ansible/roles/cinder/templates/cinder-wsgi.conf.j2 b/ansible/roles/cinder/templates/cinder-wsgi.conf.j2
index 23327fce576cd7694da34b1b16ae629e08ae9b78..1935bdcb795c7e64e9c754cfc3de3a2268111a0f 100644
--- a/ansible/roles/cinder/templates/cinder-wsgi.conf.j2
+++ b/ansible/roles/cinder/templates/cinder-wsgi.conf.j2
@@ -13,5 +13,6 @@ TraceEnable off
       ErrorLogFormat "%{cu}t %M"
     </IfVersion>
     ErrorLog /var/log/kolla/cinder/cinder-api.log
-    CustomLog /var/log/kolla/cinder/cinder-api-access.log combined
+    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
+    CustomLog /var/log/kolla/cinder/cinder-api-access.log logformat
 </VirtualHost>
diff --git a/ansible/roles/freezer/templates/wsgi-freezer-api.conf.j2 b/ansible/roles/freezer/templates/wsgi-freezer-api.conf.j2
index dd76ae7c5dfe1941d493780757336fc4293c55d1..0206235ae5a4532cdaa998ad93875e3deb4e4895 100644
--- a/ansible/roles/freezer/templates/wsgi-freezer-api.conf.j2
+++ b/ansible/roles/freezer/templates/wsgi-freezer-api.conf.j2
@@ -11,7 +11,8 @@ TraceEnable off
     WSGIScriptAlias / {{ python_path }}/freezer_api/cmd/wsgi.py
 
     ErrorLog {{ freezer_log_dir }}/freezer-api.log
-    CustomLog {{ freezer_log_dir }}/freezer-api_access.log combined
+    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
+    CustomLog {{ freezer_log_dir }}/freezer-api_access.log logformat
     LogLevel info
 
     <Directory {{ python_path }}/freezer_api>
diff --git a/ansible/roles/gnocchi/templates/wsgi-gnocchi.conf.j2 b/ansible/roles/gnocchi/templates/wsgi-gnocchi.conf.j2
index e66df6910c64dc0dc4e13e3b93c44668fc01ebbc..b518197f437e8dcec5d4c4f17e6f551c820f903f 100644
--- a/ansible/roles/gnocchi/templates/wsgi-gnocchi.conf.j2
+++ b/ansible/roles/gnocchi/templates/wsgi-gnocchi.conf.j2
@@ -7,7 +7,8 @@ TraceEnable off
 <VirtualHost *:{{ gnocchi_api_port }}>
 
   ErrorLog "/var/log/kolla/gnocchi/gnocchi-api-error.log"
-  CustomLog "/var/log/kolla/gnocchi/gnocchi-api-access.log" combined
+  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
+  CustomLog "/var/log/kolla/gnocchi/gnocchi-api-access.log" logformat
   WSGIApplicationGroup %{GLOBAL}
   WSGIDaemonProcess gnocchi group=gnocchi processes={{ openstack_service_workers }} threads=1 user=gnocchi python-path={{ python_path }}
   WSGIProcessGroup gnocchi
diff --git a/ansible/roles/horizon/templates/horizon.conf.j2 b/ansible/roles/horizon/templates/horizon.conf.j2
index 83d1c6164a164236c6572b5531b09fd2c5f90286..2e7f2a8910fb885944171aac260f1decd8ed8b16 100644
--- a/ansible/roles/horizon/templates/horizon.conf.j2
+++ b/ansible/roles/horizon/templates/horizon.conf.j2
@@ -6,7 +6,8 @@ TraceEnable off
 <VirtualHost *:{{ horizon_port }}>
     LogLevel warn
     ErrorLog /var/log/kolla/horizon/horizon.log
-    CustomLog /var/log/kolla/horizon/horizon-access.log combined
+    LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
+    CustomLog /var/log/kolla/horizon/horizon-access.log logformat
 
     WSGIScriptReloading On
     WSGIDaemonProcess horizon-http processes={{ openstack_service_workers }} threads=1 user=horizon group=horizon display-name=%{GROUP} python-path={{ python_path }}
diff --git a/ansible/roles/panko/templates/wsgi-panko.conf.j2 b/ansible/roles/panko/templates/wsgi-panko.conf.j2
index a0fff61b2c87e3869440c108b45e1c2c901a8e3a..402e216d5f4e5007cdb3708c754891da50e248ed 100644
--- a/ansible/roles/panko/templates/wsgi-panko.conf.j2
+++ b/ansible/roles/panko/templates/wsgi-panko.conf.j2
@@ -6,7 +6,8 @@ TraceEnable off
 <VirtualHost *:{{ panko_api_port }}>
 
   ErrorLog "/var/log/kolla/panko/panko-api-error.log"
-  CustomLog "/var/log/kolla/panko/panko-api-access.log" combined
+  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
+  CustomLog "/var/log/kolla/panko/panko-api-access.log" logformat
   WSGIApplicationGroup %{GLOBAL}
   WSGIDaemonProcess panko group=panko processes={{ openstack_service_workers }} threads=1 user=panko python-path={{ python_path }}
   WSGIProcessGroup panko
diff --git a/ansible/roles/zun/templates/wsgi-zun.conf.j2 b/ansible/roles/zun/templates/wsgi-zun.conf.j2
index 1c4071529203cdf9fe7c19ab1021ba3a63898069..c4f2753cbd1d1db017c8f32c745d055d0281638e 100644
--- a/ansible/roles/zun/templates/wsgi-zun.conf.j2
+++ b/ansible/roles/zun/templates/wsgi-zun.conf.j2
@@ -19,7 +19,8 @@ TraceEnable off
   ## Logging
   ErrorLog "/var/log/kolla/zun/zun_api_wsgi_error.log"
   ServerSignature Off
-  CustomLog "/var/log/kolla/zun/zun_api_wsgi_access.log" combined
+  LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b %D \"%{Referer}i\" \"%{User-Agent}i\"" logformat
+  CustomLog "/var/log/kolla/zun/zun_api_wsgi_access.log" logformat
   WSGIApplicationGroup %{GLOBAL}
   WSGIDaemonProcess zun group=zun processes={{ openstack_service_workers }} threads=1 user=zun python-path={{ python_path }}
   WSGIProcessGroup zun