diff --git a/src/error/PhutilErrorHandler.php b/src/error/PhutilErrorHandler.php
--- a/src/error/PhutilErrorHandler.php
+++ b/src/error/PhutilErrorHandler.php
@@ -6,7 +6,7 @@
  *
  * This class takes over the PHP error and exception handlers when you call
  * ##PhutilErrorHandler::initialize()## and forwards all debugging information
- * to a listener you install with ##PhutilErrorHandler::setErrorListener()##.
+ * to a listener you install with ##PhutilErrorHandler::addErrorListener()##.
  *
  * To use PhutilErrorHandler, which will enhance the messages printed to the
  * PHP error log, just initialize it:
@@ -16,7 +16,7 @@
  * To additionally install a custom listener which can print error information
  * to some other file or console, register a listener:
  *
- *    PhutilErrorHandler::setErrorListener($some_callback);
+ *    PhutilErrorHandler::addErrorListener($some_callback);
  *
  * For information on writing an error listener, see
  * @{function:phutil_error_listener_example}. Providing a listener is optional,
@@ -31,7 +31,7 @@
  */
 final class PhutilErrorHandler extends Phobject {
 
-  private static $errorListener = null;
+  private static $errorListeners = array();
   private static $initialized = false;
   private static $traps = array();
 
@@ -68,8 +68,15 @@
    * @return void
    * @task config
    */
+  public static function addErrorListener($listener) {
+    self::$errorListeners[] = $listener;
+  }
+
+  /**
+   * Deprecated - use `addErrorListener`.
+   */
   public static function setErrorListener($listener) {
-    self::$errorListener = $listener;
+    self::addErrorListener($listener);
   }
 
 
@@ -438,7 +445,7 @@
         break;
     }
 
-    if (self::$errorListener) {
+    if (self::$errorListeners) {
       static $handling_error;
       if ($handling_error) {
         error_log(
@@ -447,7 +454,9 @@
         return;
       }
       $handling_error = true;
-      call_user_func(self::$errorListener, $event, $value, $metadata);
+      foreach (self::$errorListeners as $error_listener) {
+        call_user_func($error_listener, $event, $value, $metadata);
+      }
       $handling_error = false;
     }
   }
diff --git a/src/error/phlog.php b/src/error/phlog.php
--- a/src/error/phlog.php
+++ b/src/error/phlog.php
@@ -41,7 +41,7 @@
 
 /**
  * Example @{class:PhutilErrorHandler} error listener callback. When you call
- * `PhutilErrorHandler::setErrorListener()`, you must pass a callback function
+ * `PhutilErrorHandler::addErrorListener()`, you must pass a callback function
  * with the same signature as this one.
  *
  * NOTE: @{class:PhutilErrorHandler} handles writing messages to the error
diff --git a/src/filesystem/PhutilErrorLog.php b/src/filesystem/PhutilErrorLog.php
--- a/src/filesystem/PhutilErrorLog.php
+++ b/src/filesystem/PhutilErrorLog.php
@@ -83,7 +83,7 @@
   }
 
   public function onError($event, $value, array $metadata) {
-    // If we've set "error_log" to a real file, so messages won't be output to
+    // If we've set "error_log" to a real file, messages won't be output to
     // stderr by default. Copy them to stderr.
 
     if ($this->logPath === null) {
diff --git a/src/workflow/ArcanistLookWorkflow.php b/src/workflow/ArcanistLookWorkflow.php
--- a/src/workflow/ArcanistLookWorkflow.php
+++ b/src/workflow/ArcanistLookWorkflow.php
@@ -54,6 +54,8 @@
       return 1;
     }
 
+    strlen(null);
+
     echo tsprintf(
       "%W\n\n",
       pht(