//-------------------------------------------------
// Database logging - query errors
//
// email database query errors to the contact
// specified
//
// @param n/a
// @return n/a
function db_debug_log(){
//WP already stores query errors in this obscure
//global variable, so we can see what we've ended
//up with just before shutdown
global $EZSQL_ERROR;
try {
//proceed if there were MySQL errors during runtime
if(is_array($EZSQL_ERROR) && count($EZSQL_ERROR)) {
//build a log entry
$xout = array();
//let's start with some environmental information
$xout[] = "DATE: " . current_time('r');
$xout[] = "SITE: " . site_url();
$xout[] = "IP: " . $_SERVER['REMOTE_ADDR'];
$xout[] = "UA: " . $_SERVER['HTTP_USER_AGENT'];
$xout[] = "SCRIPT: " . $_SERVER['SCRIPT_NAME'];
$xout[] = "REQUEST: " . $_SERVER['REQUEST_URI'];
$xout[] = "\n\n\n\n";
//and lastly, add the error messages with some line separations for readability
foreach($EZSQL_ERROR AS $e) {
$xout[] = str_repeat('-', 50) . "\n" . implode("\n", $e) . "\n" . str_repeat('-', 50);
$xout[] = "\n\n\n\n";
}
//email it!
//if a plugin overrides the content-type header for outbound emails, change the message body
//below to nl2br(esc_html(implode("\n", $xout)))
wp_mail(get_bloginfo('admin_email'), '[' . get_bloginfo('name') . '] DB Error', implode(“\n”, $xout));
}
} catch(Exception $e){ }
return;
}
add_action('shutdown', 'db_debug_log');
How to Log MySQL Errors in WordPress
shutdown
