diff --git a/drush/provision_logs.drush.inc b/drush/provision_logs.drush.inc
index c999e1a..687c43f 100644
--- a/drush/provision_logs.drush.inc
+++ b/drush/provision_logs.drush.inc
@@ -40,6 +40,7 @@ function drush_provision_logs_pre_hosting_task() {
   if ($task->ref->type == 'site' && $task->task_type == 'verify') {
     $task->options['logs_enabled'] = $task->ref->logs_enabled;
     $task->options['logs_available'] = $task->ref->logs_available;
+    $task->options['logs_visible'] = $task->ref->logs_visible;
   }
 }
 
@@ -79,3 +80,28 @@ function provision_logs_provision_apache_vhost_config($uri, $data) {
   $vhost[] = "";
   return $vhost;
 }
+
+/**
+ * Implements hook_provision_drupal_config()
+ */
+function provision_logs_provision_drupal_config($uri, $data) {
+  if (drush_get_option('logs_visible', FALSE)) {
+  return <<<PHP
+
+
+  /**
+   * PROVISION_LOGS
+   * This site has "logs_visible" enabled, so errors are being output to the screen.
+   * To change this, edit the site node or the drush alias.
+   */
+
+  ini_set('display_errors', 1);
+  ini_set('display_startup_errors', 1);
+  error_reporting(E_ALL);
+  /**
+   * End PROVISION_LOGS
+   */
+
+PHP;
+  }
+}
\ No newline at end of file
diff --git a/hosting_logs.install b/hosting_logs.install
index b4397c4..2fc8cdd 100644
--- a/hosting_logs.install
+++ b/hosting_logs.install
@@ -49,8 +49,28 @@ function hosting_logs_schema() {
         'not null' => TRUE,
         'default' => 1,
       ),
+      'logs_visible' => array(
+        'description' => 'Boolean to indicate if logs are output to the page.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+      ),
     ),
     'primary key' => array('site_nid'),
   );
   return $schema;
 }
+
+/**
+ * Add logs_visible field.
+ */
+function hosting_logs_update_7000() {
+  db_add_field('hosting_logs', 'logs_visible', array(
+    'description' => 'Boolean to indicate if logs are output to the page.',
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+    'default' => 1,
+  ));
+}
\ No newline at end of file
diff --git a/hosting_logs.module b/hosting_logs.module
old mode 100755
new mode 100644
index 13eacd3..f5296ee
--- a/hosting_logs.module
+++ b/hosting_logs.module
@@ -286,6 +286,11 @@ function hosting_logs_form_site_node_form_alter(&$form) {
     '#title' => t('Make error logs available at !link', array('!link' => hosting_logs_errors_link($node))),
     '#default_value' => isset($node->logs_available) ? $node->logs_available : FALSE,
   );
+  $form['logs_visible'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Output errors directly to the page. <em>WARNING: This outputs PHP errors directly to requested pages instead of serving up HTTP 500 response. Use with caution. </em>'),
+    '#default_value' => isset($node->logs_visible) ? $node->logs_visible : FALSE,
+  );
   return $form;
 }
 
@@ -293,28 +298,19 @@ function hosting_logs_form_site_node_form_alter(&$form) {
  * Implements hook_node_load().
  */
 function hosting_logs_node_load($nodes, $types) {
-  foreach ($nodes as $node) {
-    if ($node->type == 'site') {
-      if (!(isset($node->logs_enabled) && isset($node->logs_available))) {
-        $result = db_query('SELECT h.logs_enabled, h.logs_available, h.site_nid FROM {hosting_logs} h WHERE h.site_nid = :site_nid',
-          array(':site_nid' => $node->nid)
-        );
-        while ($data = $result->fetchObject()) {
-          $node->logs_enabled = $data->logs_enabled;
-          $node->logs_available = $data->logs_available;
-        }
-      }
-      if (!(isset($node->logs_enabled) && isset($node->logs_available))) {
-        $fields = array(
-          'logs_enabled' => FALSE,
-          'logs_available' => FALSE,
-          'site_nid' => $node->nid,
-        );
-        drupal_write_record('hosting_logs', $fields);
-        $node->logs_enabled = FALSE;
-        $node->logs_available = FALSE;
-      }
-    }
+  // Only operate on sites.
+  if (!in_array('site', $types)) {
+    return;
+  }
+
+  // Load all hosting_logs data where site_nid is in our nodes to load.
+  $result = db_query('SELECT * FROM {hosting_logs} WHERE site_nid IN(:nids)', array(
+    ':nids' => array_keys($nodes)
+  ));
+  foreach ($result as $record) {
+    $nodes[$record->site_nid]->logs_enabled = $record->logs_enabled;
+    $nodes[$record->site_nid]->logs_available = $record->logs_available;
+    $nodes[$record->site_nid]->logs_visible = $record->logs_visible;
   }
 }
 
@@ -326,6 +322,7 @@ function hosting_logs_node_insert($node) {
     $fields = array(
       'logs_enabled' => $node->logs_enabled,
       'logs_available' => $node->logs_available,
+      'logs_visible' => $node->logs_visible,
       'site_nid' => $node->nid,
     );
     drupal_write_record('hosting_logs', $fields, 'site_nid');
@@ -337,15 +334,16 @@ function hosting_logs_node_insert($node) {
  */
 function hosting_logs_node_update($node) {
   if ($node->type == 'site') {
-    if (empty($node->logs_enabled) || empty($node->logs_available)) {
+    if (empty($node->logs_enabled) || empty($node->logs_available) || empty($node->logs_visible)) {
       _hosting_logs_node_load_defaults($node);
     }
 
     db_merge('hosting_logs')
       ->key(array('site_nid' => $node->nid))
       ->fields(array(
-        'logs_enabled' => $node->logs_enabled,
-        'logs_available' => $node->logs_available,
+        'logs_enabled' => (int) $node->logs_enabled,
+        'logs_available' => (int) $node->logs_available,
+        'logs_visible' => (int) $node->logs_visible,
       ))
       ->execute();
   }
@@ -374,6 +372,10 @@ function _hosting_logs_node_load_defaults(&$node) {
   if (!isset($node->logs_available)) {
     $node->logs_available = FALSE;
   }
+
+  if (!isset($node->logs_visible)) {
+    $node->logs_visible = FALSE;
+  }
 }
 
 /**
