Collect API logs for Nova placement API

Change-Id: I478225eb4a59e80e4dcef2826203e072236e33ba
diff --git a/nova/files/ocata/nova-placement-api.conf b/nova/files/ocata/nova-placement-api.conf
index 02e88cc..e7cde11 100644
--- a/nova/files/ocata/nova-placement-api.conf
+++ b/nova/files/ocata/nova-placement-api.conf
@@ -14,7 +14,7 @@
     </IfVersion>
 
     ErrorLog /var/log/apache2/nova_placement_error.log
-    CustomLog /var/log/apache2/nova_placement_access.log combined
+    CustomLog /var/log/apache2/nova_placement_access.log "%v:%p %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\""
 
     <Directory /usr/bin>
         <IfVersion >= 2.4>
diff --git a/nova/meta/heka.yml b/nova/meta/heka.yml
index 6121039..2ff45c8 100644
--- a/nova/meta/heka.yml
+++ b/nova/meta/heka.yml
@@ -1,3 +1,5 @@
+{% from "nova/map.jinja" import controller with context %}
+{%- set apache_wsgi = controller.get('enabled') and controller.version not in ('juno', 'kilo', 'liberty', 'mitaka', 'newton') %}
 log_collector:
   decoder:
     nova:
@@ -11,6 +13,16 @@
       module_file: /usr/share/lma_collector/decoders/libvirt_log.lua
       module_dir: /usr/share/lma_collector/common;/usr/share/heka/lua_modules
     {%- endif %}
+    {%- if apache_wsgi %}
+    nova_placement_wsgi:
+      engine: sandbox
+      module_file: /usr/share/lma_collector/decoders/apache_wsgi_log.lua
+      module_dir: /usr/share/lma_collector/common;/usr/share/heka/lua_modules
+      config:
+        logger: openstack.nova_placement
+        apache_log_pattern: >-
+          %v:%p %h %l %u %t \"%r\" %>s %D %O \"%{Referer}i\" \"%{User-Agent}i\"
+    {%- endif %}
   splitter:
     nova:
       engine: token
@@ -33,6 +45,16 @@
       decoder: "libvirt_decoder"
       splitter: "TokenSplitter"
     {%- endif %}
+    {%- if apache_wsgi %}
+    nova_placement_wsgi_log:
+      engine: logstreamer
+      log_directory: "/var/log/apache2"
+      file_match: 'nova_placement_access\.log'
+      differentiator: ['nova-placement-wsgi']
+      priority: ["^Seq"]
+      decoder: "nova_placement_wsgi_decoder"
+      splitter: "TokenSplitter"
+    {%- endif %}
 metric_collector:
   trigger:
     nova_logs_error: