diff --git a/lib/manager/dockerfile/extract.js b/lib/manager/dockerfile/extract.js
index 3950da0cd6acacac88f15ceb3edecbe2bba10198..4d5bcbf51d63ee0cfc4a1456c1bf7e9c2f03088b 100644
--- a/lib/manager/dockerfile/extract.js
+++ b/lib/manager/dockerfile/extract.js
@@ -86,7 +86,7 @@ function extractDependencies(content) {
         logger.debug({ currentFrom }, 'Skipping alias FROM');
       } else {
         const dep = getDep(currentFrom);
-        logger.info(
+        logger.debug(
           {
             depName: dep.depName,
             currentTag: dep.currentTag,
diff --git a/lib/platform/github/gh-got-wrapper.js b/lib/platform/github/gh-got-wrapper.js
index 21e49bfb594bd20e19782adc22d1984dcc2366d6..878b73af9874807e18bc23e683e3355e5cc91243 100644
--- a/lib/platform/github/gh-got-wrapper.js
+++ b/lib/platform/github/gh-got-wrapper.js
@@ -19,7 +19,7 @@ async function get(path, options, retries = 5) {
     logger.trace({ path }, 'Returning cached result');
     return cache[path];
   }
-  logger.debug(`${method.toUpperCase()} ${path}`);
+  logger.trace(`${method.toUpperCase()} ${path}`);
   stats.requests = (stats.requests || []).concat([
     method.toUpperCase() + ' ' + path.replace(opts.endpoint, ''),
   ]);
diff --git a/lib/platform/github/storage.js b/lib/platform/github/storage.js
index 0bbcd22112e913d4073c0e7455030957ab7f2e6f..8e64e26e7babecff9243c9c089e1db70a755e7c1 100644
--- a/lib/platform/github/storage.js
+++ b/lib/platform/github/storage.js
@@ -280,11 +280,11 @@ class Storage {
       try {
         if (isBranchExisting) {
           await updateBranch(branchName, commit);
-          logger.debug({ branchName }, 'Branch updated');
+          logger.info({ branchName }, 'Branch updated');
           return 'updated';
         }
         await createBranch(branchName, commit);
-        logger.debug({ branchName }, 'Branch created');
+        logger.info({ branchName }, 'Branch created');
         return 'created';
       } catch (err) /* istanbul ignore next */ {
         logger.debug({
diff --git a/lib/platform/gitlab/gl-got-wrapper.js b/lib/platform/gitlab/gl-got-wrapper.js
index 370545fa38fb0a22dd854800c62fb64455adc3ca..959062d8bdc307786204fed249ceca830a529080 100644
--- a/lib/platform/gitlab/gl-got-wrapper.js
+++ b/lib/platform/gitlab/gl-got-wrapper.js
@@ -16,7 +16,7 @@ async function get(path, options, retries = 5) {
   const method = opts.method || 'get';
   const useCache = opts.useCache || true;
   if (method === 'get' && useCache && cache[path]) {
-    logger.debug({ path }, 'Returning cached result');
+    logger.trace({ path }, 'Returning cached result');
     return cache[path];
   }
   logger.debug({ path }, method.toUpperCase());
diff --git a/lib/workers/branch/index.js b/lib/workers/branch/index.js
index 0a4e718d01b94659adf71667b64dfc2fd8862251..cbd6f315dd544174ebd1a0094aa475cad9f33402 100644
--- a/lib/workers/branch/index.js
+++ b/lib/workers/branch/index.js
@@ -38,7 +38,7 @@ async function processBranch(branchConfig, packageFiles) {
     return 'pr-hourly-limit-reached';
   }
   try {
-    logger.info(
+    logger.debug(
       `Branch has ${dependencies ? dependencies.length : 0} upgrade(s)`
     );
 
diff --git a/lib/workers/branch/parent.js b/lib/workers/branch/parent.js
index bbfd86af620a68aaa8407076a91b0b997bc24103..a6b7e5a6208c026ab070d4a8fc715dac7d8ebae0 100644
--- a/lib/workers/branch/parent.js
+++ b/lib/workers/branch/parent.js
@@ -10,7 +10,7 @@ async function getParentBranch(config) {
     logger.info(`Branch needs creating`);
     return { parentBranch: undefined };
   }
-  logger.info(`Branch already exists`);
+  logger.debug(`Branch already exists`);
 
   // Check for existing PR
   const pr = await platform.getBranchPr(branchName);
diff --git a/lib/workers/global/cache.js b/lib/workers/global/cache.js
index ba8ee941be879305d5d693a0d94fb672adacc058..075d01cdced294e2b16ca51717dfd8776c071106 100644
--- a/lib/workers/global/cache.js
+++ b/lib/workers/global/cache.js
@@ -19,20 +19,20 @@ async function get(namespace, key) {
     const cachedValue = JSON.parse(res.data.toString());
     if (cachedValue) {
       if (DateTime.local() < DateTime.fromISO(cachedValue.expiry)) {
-        logger.debug({ namespace, key }, 'Returning cached value');
+        logger.trace({ namespace, key }, 'Returning cached value');
         return cachedValue.value;
       }
       // istanbul ignore next
       await rm(namespace, key);
     }
   } catch (err) {
-    logger.debug({ namespace, key }, 'Cache miss');
+    logger.trace({ namespace, key }, 'Cache miss');
   }
   return null;
 }
 
 async function set(namespace, key, value, ttlMinutes = 5) {
-  logger.debug({ namespace, key, ttlMinutes }, 'Saving cached value');
+  logger.trace({ namespace, key, ttlMinutes }, 'Saving cached value');
   await cacache.put(
     renovateCache,
     getKey(namespace, key),
@@ -45,7 +45,7 @@ async function set(namespace, key, value, ttlMinutes = 5) {
 
 // istanbul ignore next
 async function rm(namespace, key) {
-  logger.debug({ namespace, key }, 'Removing cache entry');
+  logger.trace({ namespace, key }, 'Removing cache entry');
   await cacache.rm.entry(renovateCache, getKey(namespace, key));
 }
 
diff --git a/lib/workers/pr/index.js b/lib/workers/pr/index.js
index 73d72079d8f4c3e982a2355bd47b3ef5c7fbec19..0d29079279e2711afa2298cf6083642538eec1f2 100644
--- a/lib/workers/pr/index.js
+++ b/lib/workers/pr/index.js
@@ -237,7 +237,7 @@ async function ensurePr(prConfig) {
       }
       existingPrBody = existingPrBody.trim();
       if (existingPr.title === prTitle && existingPrBody === prBody) {
-        logger.info(`${existingPr.displayNumber} does not need updating`);
+        logger.debug(`${existingPr.displayNumber} does not need updating`);
         return existingPr;
       }
       // PR must need updating
@@ -378,7 +378,7 @@ async function checkAutoMerge(pr, config) {
     `Checking #${pr.number} for automerge`
   );
   if (automerge) {
-    logger.info('PR is configured for automerge');
+    logger.debug('PR is configured for automerge');
     // Return if PR not ready for automerge
     if (pr.isUnmergeable) {
       logger.info('PR is not mergeable');
@@ -396,7 +396,7 @@ async function checkAutoMerge(pr, config) {
     );
     logger.debug(`branchStatus=${branchStatus}`);
     if (branchStatus !== 'success') {
-      logger.info('Branch status is not "success"');
+      logger.debug('Branch status is not "success"');
       return false;
     }
     // Check if it's been touched
diff --git a/lib/workers/repository/init/config.js b/lib/workers/repository/init/config.js
index 51ea51b13676b822b9412c7b57618c839ffe34b4..00675882a0a82a7ceca9772b9349c350ee1a81ae 100644
--- a/lib/workers/repository/init/config.js
+++ b/lib/workers/repository/init/config.js
@@ -96,7 +96,7 @@ async function mergeRenovateConfig(config) {
       error.validationMessage = 'JSON.parse error: ' + err.message;
       throw error;
     }
-    logger.info({ config: renovateJson }, 'renovate.json config');
+    logger.info({ configFile, config: renovateJson }, 'Repository config');
   }
   const migratedConfig = await migrateAndValidate(config, renovateJson);
   if (migratedConfig.errors.length) {
diff --git a/lib/workers/repository/init/semantic.js b/lib/workers/repository/init/semantic.js
index 5297c160b4da8b01073652253c70cf849cd2a60c..942f52836cf429471987e5c752ba618321082601 100644
--- a/lib/workers/repository/init/semantic.js
+++ b/lib/workers/repository/init/semantic.js
@@ -18,10 +18,10 @@ async function detectSemanticCommits(config) {
   const type = conventionalCommitsDetector(commitMessages);
   logger.debug('Semantic commits detection: ' + type);
   if (type === 'angular') {
-    logger.info('angular semantic commits detected');
+    logger.debug('angular semantic commits detected');
     return true;
   }
-  logger.info('No semantic commits detected');
+  logger.debug('No semantic commits detected');
   return false;
 }
 
diff --git a/lib/workers/repository/process/fetch.js b/lib/workers/repository/process/fetch.js
index f7662b8ef4991c7f4f39c22776cc450ad8da10bd..7cc9e9f90ab97342af0444fa0e5ad84b15df8d79 100644
--- a/lib/workers/repository/process/fetch.js
+++ b/lib/workers/repository/process/fetch.js
@@ -51,7 +51,7 @@ async function fetchDepUpdates(packageFileConfig, dep) {
     }
     // istanbul ignore if
     if (dep.updates.length) {
-      logger.info(
+      logger.debug(
         { dependency: depName },
         `${dep.updates.length} result(s): ${dep.updates.map(
           upgrade => upgrade.newValue
diff --git a/lib/workers/repository/process/limits.js b/lib/workers/repository/process/limits.js
index 1ca9a18db2ee500ab77bd80f8dd45444781e39c3..69537f28fd1c7b27ebd6c6276cf73bfe30535111 100644
--- a/lib/workers/repository/process/limits.js
+++ b/lib/workers/repository/process/limits.js
@@ -19,7 +19,7 @@ async function getPrHourlyRemaining(config) {
           moment(pr.createdAt).isAfter(currentHourStart)
       ).length;
       const prsRemaining = config.prHourlyLimit - soFarThisHour;
-      logger.info(`PR hourly limit remaining: ${prsRemaining}`);
+      logger.debug(`PR hourly limit remaining: ${prsRemaining}`);
       return prsRemaining;
     } catch (err) {
       logger.error('Error checking PRs created per hour');
@@ -39,7 +39,7 @@ async function getConcurrentPrsRemaining(config, branches) {
     }
     logger.debug(`${currentlyOpen} PRs are currently open`);
     const concurrentRemaining = config.prConcurrentLimit - currentlyOpen;
-    logger.info(`PR concurrent limit remaining: ${concurrentRemaining}`);
+    logger.debug(`PR concurrent limit remaining: ${concurrentRemaining}`);
     return concurrentRemaining;
   }
   return 99;
diff --git a/lib/workers/repository/process/write.js b/lib/workers/repository/process/write.js
index 267db0dcdda2f8cd5b1c94258f5e6133c942ab1e..d9beae7e4ae4d3dfd5042a12d9522f988f6efae9 100644
--- a/lib/workers/repository/process/write.js
+++ b/lib/workers/repository/process/write.js
@@ -9,7 +9,10 @@ module.exports = {
 
 async function writeUpdates(config, packageFiles, allBranches) {
   let branches = allBranches;
-  logger.info(`Processing ${branches.length} branch(es)`);
+  logger.info(
+    { branchList: branches.map(b => b.branchName).sort() },
+    `Processing ${branches.length} branch${branches.length && 'es'}`
+  );
   if (!config.mirrorMode) {
     branches = branches.filter(branchConfig => {
       if (branchConfig.blockedByPin) {