diff --git a/bin/noblogs.in b/bin/noblogs.in
index e912cae6413f832a24ad137e1f08f852efca7c2a..d93f49770d1ebe25a4c40962175714bbe5f10805 100755
--- a/bin/noblogs.in
+++ b/bin/noblogs.in
@@ -117,7 +117,7 @@ function do_get_option($args) {
   foreach (array_splice($args, 1) as $arg) {
     $blog = noblogs_get_blog($arg);
     if (!$blog) {
-      echo "Blog {$arg} not found.\n";
+      error_log("blog {$arg} not found");
       continue;
     }
 
@@ -151,7 +151,7 @@ function do_set_option($args) {
     foreach ($args as $arg) {
         $blog = noblogs_get_blog($arg);
         if (!$blog) {
-            echo "Blog {$arg} not found.\n";
+            error_log("blog {$arg} not found");
             continue;
         }
 
@@ -174,7 +174,7 @@ function do_set_theme($args) {
     foreach ($args as $arg) {
         $blog = noblogs_get_blog($arg);
         if (!$blog) {
-            echo "Blog {$arg} not found.\n";
+            error_log("blog {$arg} not found");
             continue;
         }
 
@@ -229,7 +229,7 @@ function do_check_upgrade($args) {
   foreach ($args as $arg) {
     $blog = noblogs_get_blog($arg);
     if (!$blog) {
-      echo "Blog {$arg} not found.\n";
+      error_log("blog {$arg} not found");
       continue;
     }
     switch_to_blog($blog->blog_id);
@@ -250,7 +250,7 @@ function do_upgrade($args) {
   foreach ($args as $arg) {
     $blog = noblogs_get_blog($arg);
     if (!$blog) {
-      echo "Blog {$arg} not found.\n";
+      error_log("blog {$arg} not found");
       continue;
     }
     switch_to_blog($blog->blog_id);
@@ -264,14 +264,14 @@ function do_upgrade($args) {
 function do_run_cron($args) {
   add_filter('wp_doing_cron', function($args) { return true; });
   foreach ($args as $arg) {
-    $blog = noblogs_get_blog($arg);
-    if (!$blog) {
-      echo "Blog {$arg} not found.\n";
+    $blog_id = noblogs_get_blog_id($arg);
+    if ($blog_id < 0) {
+      error_log("blog {$arg} not found");
       continue;
     }
-    switch_to_blog($blog->blog_id);
+    echo "{$blog_id}\n";
+    switch_to_blog($blog_id);
     noblogs_run_cron_for_current_blog();
-    echo "{$arg}: ok\n";
     restore_current_blog();
   }
   remove_all_filters('wp_doing_cron');
@@ -283,11 +283,11 @@ function do_check_spam($args) {
   foreach ($args as $arg) {
     $blog = noblogs_get_blog($arg);
     if (!$blog) {
-      echo "Blog {$arg} not found.\n";
+      error_log("blog {$arg} not found");
       continue;
     }
     $spam = $wpdb->get_var("SELECT count(*) FROM wp_".$blog->blog_id ."_comments where comment_approved = 'spam';");
-    $spamcount+=$spam;
+    $spamcount += $spam;
     printf("%s - %d : %d\n", $blog->domain, $blog->blog_id, $spam);
   }
   printf("Found %d spam comments\n", $spamcount);
@@ -298,7 +298,7 @@ function do_nuke_spam($args) {
   foreach ($args as $arg) {
     $blog = noblogs_get_blog($arg);
     if (!$blog) {
-      echo "Blog {$arg} not found.\n";
+      error_log("blog {$arg} not found");
       continue;
     }
     $spam = $wpdb->get_var("DELETE FROM wp_".$blog->blog_id ."_comments where comment_approved = 'spam' and comment_date < '".date('Y-m-d',time() - (86400 * 60))."';");
@@ -433,7 +433,7 @@ function do_fix_cdn($args){
     foreach ($args as $arg) {
         $blog = noblogs_get_blog($arg);
         if (!$blog) {
-            echo "{$arg}: blog not found.\n";
+            error_log("blog {$arg} not found");
             continue;
         }
         switch_to_blog($blog->blog_id);
@@ -460,7 +460,7 @@ function do_rename_plugins($args){
     foreach ($args as $arg) {
         $blog = noblogs_get_blog($arg);
         if (!$blog) {
-            echo "{$arg}: blog not found.\n";
+            error_log("blog {$arg} not found");
             continue;
         }
         switch_to_blog($blog->blog_id);
@@ -492,7 +492,7 @@ function do_uninstall_plugin($args){
     foreach ($args as $arg) {
         $blog = noblogs_get_blog($arg);
         if (!$blog) {
-            echo "{$arg}: blog not found.\n";
+            error_log("blog {$arg} not found");
             continue;
         }
         switch_to_blog($blog->blog_id);
@@ -510,7 +510,7 @@ function do_copy_custom_css($args){
     foreach ($args as $arg) {
         $blog = noblogs_get_blog($arg);
         if (!$blog) {
-            echo "{$arg}: blog not found.\n";
+            error_log("blog {$arg} not found");
             continue;
         }
         switch_to_blog($blog->blog_id);
diff --git a/lib/blogs.php b/lib/blogs.php
index 402fb210c12f65ecf19aa61a39d060071741b12b..a87403c3d113b9084659ddb42a6fdd6a7269a264 100644
--- a/lib/blogs.php
+++ b/lib/blogs.php
@@ -25,6 +25,19 @@ function noblogs_get_local_blog_objects() {
     return $blogs;
 }
 
+// Return the blog ID, if the argument is a blog name. If it's already
+// an ID, return it unchanged.
+function noblogs_get_blog_id($arg) {
+    if (preg_match('/^\d+$/', $arg)) {
+        return $arg;
+    }
+    $blog = noblogs_get_blog($arg);
+    if (!$blog) {
+        return -1;
+    }
+    return $blog->blog_id;
+}
+
 // Find a blog by its name or ID.
 function noblogs_get_blog($blogname) {
   global $wpdb;
diff --git a/lib/cron.php b/lib/cron.php
index b93b217a4b2cc46c53c38499d223580a34791e73..4148ee785e23e6a4de19b534bb64c3b8901e52f3 100644
--- a/lib/cron.php
+++ b/lib/cron.php
@@ -57,6 +57,9 @@ function noblogs_run_cron_for_current_blog() {
     $blog_details = get_blog_details(null, false);
     $domain = $blog_details->domain;
     echo "  executing wp-cli for unsafe hooks ({$domain})\n";
-    system("wp cron event run --due-now --url={$domain}");
+    system("wp cron event run --due-now --url={$domain}", $retval);
+    if ($retval != 0) {
+        error_log("error executing wp-cli cron runner for blog {$domain}");
+    }
   }
 }