Index: includes/bootstrap.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/bootstrap.inc,v retrieving revision 1.245 diff -u -F^f -r1.245 bootstrap.inc --- includes/bootstrap.inc 2 Nov 2008 10:56:35 -0000 1.245 +++ includes/bootstrap.inc 3 Nov 2008 07:03:04 -0000 @@ -904,9 +904,17 @@ function watchdog($type, $message, $vari 'timestamp' => REQUEST_TIME, ); - // Call the logging hooks to log/process the message - foreach (module_implements('watchdog', TRUE) as $module) { - module_invoke($module, 'watchdog', $log_message); + if (function_exists('module_implements')) { + // Call the logging hooks to log/process the message + foreach (module_implements('watchdog', TRUE) as $module) { + module_invoke($module, 'watchdog', $log_message); + } + } + else { + // This section is for handling errors that happen too early, before module.inc + // gets loaded. If that happens, we don't have module_implements() yet, and therefore + // Drupal will abort if we call it. So we log stuff to the web server's log. + error_log(format_error_message($log_message)); } } $in_error_state = FALSE; @@ -1575,3 +1583,21 @@ function registry_load_path_files($retur /** * @} End of "ingroup registry". */ + +/** + * Format an error message for logging to web server log, or syslog. + */ +function formar_error_message($log_message = array()) { + global $base_root; + + $message = $base_root; + $message .= '|type=' . $type; + $message .= '|ip=' . $log_message['ip']; + $message .= '|uri=' . $log_message['request_uri']; + $message .= '|referer=' . $log_message['referer']; + $message .= '|uid=' . $log_message['user']->uid; + $message .= '|link=' . strip_tags($link); + $message .= '|message=' . strip_tags(is_null($variables) ? $message : strtr($message, $variables)); + + return $message; +} Index: modules/syslog/syslog.module =================================================================== RCS file: /cvs/drupal/drupal/modules/syslog/syslog.module,v retrieving revision 1.18 diff -u -F^f -r1.18 syslog.module --- modules/syslog/syslog.module 31 Aug 2008 09:15:13 -0000 1.18 +++ modules/syslog/syslog.module 3 Nov 2008 07:03:04 -0000 @@ -82,7 +82,7 @@ function syslog_watchdog($entry) { function syslog_theme() { return array( 'syslog_format' => array( - 'arguments' => array('entry' => NULL), + 'arguments' => array('log_message' => NULL), ), ); } @@ -92,18 +92,6 @@ function syslog_theme() { * * @ingroup themeable */ -function theme_syslog_format($entry) { - global $base_url; - - $message = $base_url; - $message .= '|' . $entry['timestamp']; - $message .= '|' . $entry['type']; - $message .= '|' . $entry['ip']; - $message .= '|' . $entry['request_uri']; - $message .= '|' . $entry['referer']; - $message .= '|' . $entry['user']->uid; - $message .= '|' . strip_tags($entry['link']); - $message .= '|' . strip_tags(is_null($entry['variables']) ? $entry['message'] : strtr($entry['message'], $entry['variables'])); - - return $message; +function theme_syslog_format($log_message) { + return format_error_message($log_message); }