diff --git a/manifests/site.pp b/manifests/site.pp
index 5ee7c5628c..5c29717f01 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -305,7 +305,7 @@ node 'zuul.openstack.org' {
     gerrit_server        => 'review.openstack.org',
     gerrit_user          => 'jenkins',
     zuul_ssh_private_key => hiera('jenkins_ssh_private_key_contents'),
-    url_pattern          => 'http://logs.openstack.org/{change.number}/{change.patchset}/{pipeline.name}/{job.name}/{build.number}',
+    url_pattern          => 'http://logs.openstack.org/{build.parameters[BASE_LOG_PATH]}/{job.name}/{build.number}',
     sysadmins            => hiera('sysadmins'),
     statsd_host          => 'graphite.openstack.org',
     gearman_workers      => [
@@ -320,7 +320,7 @@ node 'zuul-dev.openstack.org' {
     gerrit_server        => 'review.openstack.org',
     gerrit_user          => 'zuul-dev',
     zuul_ssh_private_key => hiera('zuul_dev_ssh_private_key_contents'),
-    url_pattern          => 'http://logs.openstack.org/{change.number}/{change.patchset}/{pipeline.name}/{job.name}/{build.number}',
+    url_pattern          => 'http://logs.openstack.org/{build.parameters[BASE_LOG_PATH]}/{job.name}/{build.number}',
     sysadmins            => hiera('sysadmins'),
     statsd_host          => 'graphite.openstack.org',
     gearman_workers      => [
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/api-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/api-jobs.yaml
index 455ba24901..8ddfa3570c 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/api-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/api-jobs.yaml
@@ -31,7 +31,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'openstack-api-programming/target/docbkx/webhelp/openstack-api-programming/admin/**'
@@ -58,7 +58,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'api-quick-start/target/docbkx/webhelp/api-quick-start-onepager/**'
@@ -86,7 +86,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: api.openstack.org
           source: 'api-ref/target/docbkx/html/**'
@@ -113,7 +113,7 @@
           target: ''
           remove-prefix: 'www/'
           excludes: ''
-      - console-log-post
+      - console-log
 
 - job:
     name: image-api-v2.0
@@ -146,7 +146,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'openstack-image-service-api/src/markdown/target/docbkx/webhelp/api/openstack-image-service/2.0/**'
@@ -174,7 +174,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/target/docbkx/webhelp/api/openstack-network/1.0/**'
@@ -199,7 +199,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/target/docbkx/webhelp/api/openstack-network/2.0/**'
@@ -225,7 +225,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'openstack-object-storage-dev/target/docbkx/webhelp/**'
@@ -251,7 +251,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'openstack-compute-api-2/target/docbkx/webhelp/api/openstack-compute/2/**'
@@ -275,7 +275,7 @@
           target: 'api/openstack-compute/2/wadl/'
           remove-prefix: 'target/'
           excludes: '**/*.xml,**/null*'
-      - console-log-post
+      - console-log
 
 - job:
     name: block-api-v2.0
@@ -295,7 +295,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'v2/target/docbkx/webhelp/api/openstack-block-storage/2.0/**'
@@ -322,7 +322,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'openstack-identity-api/v2.0/target/docbkx/webhelp/api/openstack-identity-service/2.0/**'
@@ -361,7 +361,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'openstack-identity-api/v3/markdown/target/docbkx/webhelp/api/openstack-identity-service/3/**'
@@ -389,7 +389,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'openstack-image-service-api/target/docbkx/webhelp/api/openstack-image-service/1.1/**'
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yaml b/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yaml
index b51a14a028..d234bbe538 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/gerrit.yaml
@@ -89,4 +89,4 @@
           site: 'tarballs.openstack.org'
           warfile: 'gerrit-war/target/gerrit*.war'
           target: 'tarballs/ci/'
-      - console-log-post
+      - console-log
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/horizon.yaml b/modules/openstack_project/files/jenkins_job_builder/config/horizon.yaml
index 64f23774e2..b800e19d25 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/horizon.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/horizon.yaml
@@ -27,23 +27,5 @@
       - assert-no-extra-files
 
     publishers:
-      - scp:
-          site: 'static.openstack.org'
-          files:
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*nose_results.html'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*testr_results.html.gz'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '.testrepository/tmp*'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*subunit_log.txt.gz'
-              keep-hierarchy: false
-              copy-after-failure: true
+      - test-results
       - console-log
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/infra-publications.yaml b/modules/openstack_project/files/jenkins_job_builder/config/infra-publications.yaml
index 68f203e5c1..fc8b657b1b 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/infra-publications.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/infra-publications.yaml
@@ -14,7 +14,7 @@
           target: 'infra/publications/$ZUUL_BRANCH/'
           remove-prefix: ''
           excludes: ''
-      - console-log-post
+      - console-log
 
 - job:
     name: infra-publications-publish-index
@@ -36,4 +36,4 @@
           target: 'infra/publications/'
           remove-prefix: 'output/'
           excludes: ''
-      - console-log-post
+      - console-log
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/jenkins-plugin-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/jenkins-plugin-jobs.yaml
index 0f114ed54b..51127544c8 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/jenkins-plugin-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/jenkins-plugin-jobs.yaml
@@ -59,7 +59,7 @@
           site: 'tarballs.openstack.org'
           warfile: 'target/{name}-${{PROJECT_VER}}.hpi'
           target: 'tarballs/ci/{name}'
-      - console-log-post
+      - console-log
 
 - job-template:
     name: '{name}-jenkinsci-upload'
@@ -81,7 +81,7 @@
           /usr/local/jenkins/slave_scripts/maven-upload.sh {name} $JENKINSCI_REPO $JENKINSCI_REPO_CREDS
 
     publishers:
-      - console-log-post
+      - console-log
 
 - job-group:
     name: jenkins-plugin-jobs
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/job-builder.yaml b/modules/openstack_project/files/jenkins_job_builder/config/job-builder.yaml
index 65ed7bd444..1ab1f3e508 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/job-builder.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/job-builder.yaml
@@ -16,7 +16,7 @@
             - target: 'ci/jenkins-job-builder'
               source: 'doc/build/html/**/*'
               keep-hierarchy: true
-      - console-log-post
+      - console-log
 
 - job:
     name: jenkins-job-builder-compare-xml
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/macros.yaml b/modules/openstack_project/files/jenkins_job_builder/config/macros.yaml
index 47d049da9c..b41d3beaa0 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/macros.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/macros.yaml
@@ -187,10 +187,8 @@
     builders:
       - shell: |
           #!/bin/sh
-          if test "$ZUUL_CHANGE" ; then
-              echo "Detailed logs: http://logs.openstack.org/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER/"
-          elif test "$ZUUL_SHORT_NEWREV" ; then
-              echo "Detailed logs: http://logs.openstack.org/$ZUUL_SHORT_NEWREV/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER/"
+          if test "$BASE_LOG_PATH" ; then
+              echo "Detailed logs: http://logs.openstack.org/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER/"
           else
               echo "Detailed logs: http://logs.openstack.org/periodic/$JOB_NAME/$BUILD_NUMBER/"
           fi
@@ -235,17 +233,7 @@
       - scp:
           site: 'static.openstack.org'
           files:
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              copy-console: true
-              copy-after-failure: true
-
-- publisher:
-    name: console-log-post
-    publishers:
-      - scp:
-          site: 'static.openstack.org'
-          files:
-            - target: 'logs/$ZUUL_SHORT_NEWREV/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
               copy-console: true
               copy-after-failure: true
 
@@ -265,15 +253,15 @@
       - scp:
           site: 'static.openstack.org'
           files:
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
               source: 'logs/**'
               keep-hierarchy: true
               copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
               source: '**/testr_results.html.gz'
               keep-hierarchy: false
               copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
               source: '**/subunit_log.txt.gz'
               keep-hierarchy: false
               copy-after-failure: true
@@ -315,18 +303,30 @@
       - scp:
           site: 'static.openstack.org'
           files:
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
               source: 'cover/**'
               keep-hierarchy: true
               copy-after-failure: true
 
 - publisher:
-    name: coverage-log-post
+    name: test-results
     publishers:
       - scp:
           site: 'static.openstack.org'
           files:
-            - target: 'logs/$ZUUL_SHORT_NEWREV/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: 'cover/**'
-              keep-hierarchy: true
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
+              source: '**/*nose_results.html'
+              keep-hierarchy: false
+              copy-after-failure: true
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
+              source: '**/*testr_results.html.gz'
+              keep-hierarchy: false
+              copy-after-failure: true
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
+              source: '.testrepository/tmp*'
+              keep-hierarchy: false
+              copy-after-failure: true
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
+              source: '**/*subunit_log.txt.gz'
+              keep-hierarchy: false
               copy-after-failure: true
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/manuals.yaml b/modules/openstack_project/files/jenkins_job_builder/config/manuals.yaml
index cbaf4aae3a..a1dde1a8c2 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/manuals.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/manuals.yaml
@@ -19,7 +19,7 @@
       - scp:
           site: 'static.openstack.org'
           files:
-            - target: 'docs-draft/$JOB_NAME/$ZUUL_PIPELINE/$BUILD_NUMBER/cli/quick-start'
+            - target: 'docs-draft/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER/cli/quick-start'
               source: 'doc/src/docbkx/cli-guide/target/docbkx/webhelp/cli-guide/**'
               keep-hierarchy: true
               copy-after-failure: true
@@ -45,7 +45,7 @@
       - scp:
           site: 'static.openstack.org'
           files:
-            - target: 'docs-draft/$JOB_NAME/$ZUUL_PIPELINE/$BUILD_NUMBER/ops/'
+            - target: 'docs-draft/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER/ops/'
               source: 'doc/src/docbkx/openstack-ops/target/docbkx/webhelp/**'
               keep-hierarchy: true
               copy-after-failure: true
@@ -78,7 +78,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/cli-guide/target/docbkx/webhelp/cli-guide/**'
@@ -108,7 +108,7 @@
       goals: '-Doperating.system=yum -Dprofile.os=centos;fedora;rhel -Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/basic-install/target/docbkx/webhelp/**'
@@ -141,7 +141,7 @@
       goals: '-Doperating.system=apt -Dprofile.os=ubuntu;debian -Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/basic-install/target/docbkx/webhelp/**'
@@ -171,7 +171,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-block-storage-admin/target/docbkx/webhelp/**'
@@ -196,7 +196,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/common/glossary/target/docbkx/webhelp/openstack-glossary/**'
@@ -227,7 +227,7 @@
       goals: '-Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-image/target/docbkx/webhelp/**'
@@ -258,7 +258,7 @@
       goals: '-Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-compute-admin/target/docbkx/webhelp/**'
@@ -289,7 +289,7 @@
       goals: '-Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-network-connectivity-admin/target/docbkx/webhelp/**'
@@ -320,7 +320,7 @@
       goals: '-Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-object-storage-admin/target/docbkx/webhelp/**'
@@ -344,7 +344,7 @@
           target: ''
           remove-prefix: 'www/'
           excludes: ''
-      - console-log-post
+      - console-log
 
 # in zuul/layout.yaml specified to only run against master branch.
 # The old jenkins config polled github every 5 minutes and was also triggered
@@ -377,7 +377,7 @@
       goals: 'clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-ha/target/docbkx/webhelp/trunk/**'
@@ -408,7 +408,7 @@
       goals: '-Doperating.system=yum -Dprofile.os=centos;fedora;rhel -Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-install/target/docbkx/webhelp/**'
@@ -439,7 +439,7 @@
       goals: '-Doperating.system=apt -Dprofile.os=ubuntu -Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-install/target/docbkx/webhelp/**'
@@ -470,7 +470,7 @@
       goals: '-Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-ops/target/docbkx/webhelp/**'
@@ -501,10 +501,10 @@
       goals: '-Drelease.path.name=${DOC_RELEASE_PATH} -Dcomments.enabled=${DOC_COMMENTS_ENABLED} clean generate-sources'
 
     publishers:
-      - console-log-post
+      - console-log
       - ftp:
           site: docs.openstack.org
           source: 'doc/src/docbkx/openstack-security/target/docbkx/webhelp/**'
           target: '/'
           remove-prefix: 'doc/src/docbkx/openstack-security/target/docbkx/webhelp/'
-          excludes: '**/*.xml,**/null*'
\ No newline at end of file
+          excludes: '**/*.xml,**/null*'
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/mirror.yaml b/modules/openstack_project/files/jenkins_job_builder/config/mirror.yaml
index 6a4f8bc3fc..8f9cc9f38f 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/mirror.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/mirror.yaml
@@ -36,7 +36,7 @@
 
     publishers:
       - link-logs
-      - console-log-post
+      - console-log
 
 
 - job:
@@ -77,4 +77,4 @@
 
     publishers:
       - link-logs
-      - console-log-post
+      - console-log
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yaml b/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yaml
index fd058fe5be..7c3f5fd6f3 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/openstack-ci-puppet.yaml
@@ -40,4 +40,4 @@
             - target: 'ci'
               source: 'doc/build/html/**/*'
               keep-hierarchy: true
-      - console-log-post
+      - console-log
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yaml
index 18ac872794..b9012d2252 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/openstack-publish-jobs.yaml
@@ -15,7 +15,7 @@
           target: 'developer/{name}'
           remove-prefix: 'doc/build/html'
           excludes: ''
-      - console-log-post
+      - console-log
 
 
 - job-group:
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/openstack-qa.yaml b/modules/openstack_project/files/jenkins_job_builder/config/openstack-qa.yaml
index 832830449c..53528890e1 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/openstack-qa.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/openstack-qa.yaml
@@ -17,4 +17,4 @@
             - target: 'qa'
               source: 'build/sphinx/html/**/*'
               keep-hierarchy: true
-      - console-log-post
+      - console-log
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/pbr.yaml b/modules/openstack_project/files/jenkins_job_builder/config/pbr.yaml
index 6c070ae52c..e3db87e7d3 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/pbr.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/pbr.yaml
@@ -35,7 +35,7 @@
       - scp:
           site: 'static.openstack.org'
           files:
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
+            - target: 'logs/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER'
               source: '**/pip.log'
               keep-hierarchy: false
               copy-after-failure: true
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yaml
index 7d43feb9be..b324c9c5f3 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/pypi-jobs.yaml
@@ -17,7 +17,7 @@
           /usr/local/jenkins/slave_scripts/pypi-upload.sh {name}
 
     publishers:
-      - console-log-post
+      - console-log
 
 
 - job-group:
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yaml
index e8145b57da..cd76e5ccf4 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/python-jobs.yaml
@@ -14,8 +14,8 @@
           project: '{name}'
 
     publishers:
-      - coverage-log-post
-      - console-log-post
+      - coverage-log
+      - console-log
 
     node: '{node}'
 
@@ -67,25 +67,7 @@
       - assert-no-extra-files
 
     publishers:
-      - scp:
-          site: 'static.openstack.org'
-          files:
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*nose_results.html'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*testr_results.html.gz'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '.testrepository/tmp*'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*subunit_log.txt.gz'
-              keep-hierarchy: false
-              copy-after-failure: true
+      - test-results
       - console-log
 
     node: centos6
@@ -113,25 +95,7 @@
       - assert-no-extra-files
 
     publishers:
-      - scp:
-          site: 'static.openstack.org'
-          files:
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*nose_results.html'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*testr_results.html.gz'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '.testrepository/tmp*'
-              keep-hierarchy: false
-              copy-after-failure: true
-            - target: 'logs/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER'
-              source: '**/*subunit_log.txt.gz'
-              keep-hierarchy: false
-              copy-after-failure: true
+      - test-results
       - console-log
 
     node: '{node}'
@@ -150,7 +114,7 @@
       - scp:
           site: 'static.openstack.org'
           files:
-            - target: 'docs-draft/$ZUUL_CHANGE/$ZUUL_PATCHSET/$ZUUL_PIPELINE/$JOB_NAME/$BUILD_NUMBER/'
+            - target: 'docs-draft/$BASE_LOG_PATH/$JOB_NAME/$BUILD_NUMBER/'
               source: 'doc/build/html/**'
               keep-hierarchy: true
               copy-after-failure: true
@@ -186,7 +150,7 @@
       - tarball:
           project: '{name}'
           site: '{tarball-site}'
-      - console-log-post
+      - console-log
 
 
 - job-template:
@@ -209,7 +173,7 @@
       - tarball:
           project: '{name}'
           site: '{tarball-site}'
-      - console-log-post
+      - console-log
 
 
 - job-template:
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/translation-jobs.yaml b/modules/openstack_project/files/jenkins_job_builder/config/translation-jobs.yaml
index b856b6c4f5..a0e7eb6a40 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/translation-jobs.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/translation-jobs.yaml
@@ -9,7 +9,7 @@
           /usr/local/jenkins/slave_scripts/upstream_translation_update.sh {name}
 
     publishers:
-      - console-log-post
+      - console-log
 
     node: 'tx'
 
@@ -47,7 +47,7 @@
           /usr/local/jenkins/slave_scripts/upstream_translation_update_manuals.sh
 
     publishers:
-      - console-log-post
+      - console-log
 
     node: 'tx'
 
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/zuul.yaml b/modules/openstack_project/files/jenkins_job_builder/config/zuul.yaml
index c137e7a69f..3f1d4e6764 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/zuul.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/zuul.yaml
@@ -16,7 +16,7 @@
             - target: 'ci/zuul'
               source: 'doc/build/html/**/*'
               keep-hierarchy: true
-      - console-log-post
+      - console-log
 
 - job:
     name: 'dev-zuul-coverage'
diff --git a/modules/openstack_project/files/logstash/log-gearman-client.py b/modules/openstack_project/files/logstash/log-gearman-client.py
index 001fa852e8..d905129248 100644
--- a/modules/openstack_project/files/logstash/log-gearman-client.py
+++ b/modules/openstack_project/files/logstash/log-gearman-client.py
@@ -74,19 +74,13 @@ class EventProcessor(threading.Thread):
             except:
                 logging.exception("Exception submitting job to Gearman.")
 
-    log_dirs = {
-        'check': "/{build_change}/{build_patchset}/{build_queue}/"
-                 "{build_name}/{build_number}/",
-        'gate': "/{build_change}/{build_patchset}/{build_queue}/"
-                "{build_name}/{build_number}/",
-        'post': "/{build_shortref}/{build_queue}/{build_name}/"
-                "{build_number}/",
-        'pre-release': "/{build_shortref}/{build_queue}/{build_name}/"
-                       "{build_number}/",
-        'release': "/{build_shortref}/{build_queue}/{build_name}/"
-                   "{build_number}/",
-        'UNKNOWN': "/periodic/{build_name}/{build_number}/",
-    }
+    def _get_log_dir(self, event):
+        parameters = event["build"].get("parameters", {})
+        base = parameters.get('BASE_LOG_PATH', '/periodic')
+        base += '/{name}/{number}/'.format(
+            name=event.get("name", "UNKNOWN"),
+            number=event["build"].get("number", "UNKNOWN"))
+        return base
 
     def _parse_fields(self, event, filename):
         fields = {}
@@ -107,7 +101,7 @@ class EventProcessor(threading.Thread):
 
     def _parse_event(self, event, fileopts):
         fields = self._parse_fields(event, fileopts['name'])
-        log_dir = self.log_dirs.get(fields["build_queue"], "").format(**fields)
+        log_dir = self._get_log_dir(event)
         source_url = fileopts.get('source-url', self.source_url) + \
                 log_dir + fileopts['name']
         out_event = {}
diff --git a/modules/openstack_project/files/zuul/layout-dev.yaml b/modules/openstack_project/files/zuul/layout-dev.yaml
index 3c17da192c..b262e4517f 100644
--- a/modules/openstack_project/files/zuul/layout-dev.yaml
+++ b/modules/openstack_project/files/zuul/layout-dev.yaml
@@ -12,6 +12,8 @@ pipelines:
 
 
 jobs:
+  - name: ^.*$
+    parameter-function: set_log_url
   - name: gate-tempest-devstack-vm-cinder
     branch: stable/folsom
   - name: gate-tempest-devstack-vm-smoke
@@ -56,9 +58,9 @@ jobs:
   - name: openstack-ha-guide
     branch: ^master$
   - name: gate-openstack-cli-guide
-    success-pattern: http://docs-draft.openstack.org/{job.name}/{pipeline.name}/{build.number}/cli/quick-start
+    success-pattern: http://docs-draft.openstack.org/{build.parameters[BASE_LOG_PATH]}/{build.number}/cli/quick-start
   - name: ^gate-.*-docs$
-    success-pattern: http://docs-draft.openstack.org/{change.number}/{change.patchset}/{pipeline.name}/{job.name}/{build.number}/doc/build/html/
+    success-pattern: http://docs-draft.openstack.org/{build.parameters[BASE_LOG_PATH]}/{job.name}/{build.number}/doc/build/html/
   - name: ^gate-.*-requirements$
     failure-message: Incompatible requirement found; see https://wiki.openstack.org/wiki/Requirements
     branch: ^(?!stable/(folsom|grizzly)).*$
diff --git a/modules/openstack_project/files/zuul/layout.yaml b/modules/openstack_project/files/zuul/layout.yaml
index ec90791739..8c995bce82 100644
--- a/modules/openstack_project/files/zuul/layout.yaml
+++ b/modules/openstack_project/files/zuul/layout.yaml
@@ -69,6 +69,8 @@ pipelines:
 
 
 jobs:
+  - name: ^.*$
+    parameter-function: set_log_url
   - name: gate-tempest-devstack-vm-cinder
     branch: stable/folsom
   - name: gate-tempest-devstack-vm-smoke
@@ -139,9 +141,9 @@ jobs:
   - name: openstack-security-guide
     branch: ^master$
   - name: gate-openstack-cli-guide
-    success-pattern: http://docs-draft.openstack.org/{job.name}/{pipeline.name}/{build.number}/cli/quick-start
+    success-pattern: http://docs-draft.openstack.org/{build.parameters[BASE_LOG_PATH]}/{job.name}/{build.number}/cli/quick-start
   - name: ^gate-.*-docs$
-    success-pattern: http://docs-draft.openstack.org/{change.number}/{change.patchset}/{pipeline.name}/{job.name}/{build.number}/doc/build/html/
+    success-pattern: http://docs-draft.openstack.org/{build.parameters[BASE_LOG_PATH]}/{job.name}/{build.number}/doc/build/html/
   - name: infra-publications-publish
     branch: ^(?!master).*$
   - name: ^gate-.*-requirements$
diff --git a/modules/openstack_project/files/zuul/openstack_functions.py b/modules/openstack_project/files/zuul/openstack_functions.py
index 5f211ec774..a586dbc6ec 100644
--- a/modules/openstack_project/files/zuul/openstack_functions.py
+++ b/modules/openstack_project/files/zuul/openstack_functions.py
@@ -1 +1,10 @@
-# No content currently.  In repo for ease of future use.
+def set_log_url(item, params):
+    if hasattr(item.change, 'refspec'):
+        path = "%s/%s/%s/%s" % (
+            params['ZUUL_CHANGE'][-2:], params['ZUUL_CHANGE'],
+            params['ZUUL_PATCHSET'], params['ZUUL_PIPELINE'])
+    else:
+        path = "%s/%s/%s" % (
+            params['ZUUL_NEWREV'][:2], params['ZUUL_NEWREV'],
+            params['ZUUL_PIPELINE'])
+    params['BASE_LOG_PATH'] = path