Recently as part of one of the troubleshooting activities, I had to log all the SQL queries generated by WordPress. I have followed the below approach to log the queries.

Add the below snippet of code to the functions.php file within your themes folder.

add_action('shutdown', 'sql_logger');
function sql_logger() {
    global $wpdb;
    $log_file = fopen(ABSPATH.'/sqlqueries.log', 'a');
    fwrite($log_file, "===============================\n\n" . date("F j, Y, g:i:s a")."\n");
    foreach($wpdb->queries as $q) {
        fwrite($log_file, $q[0] . " - ($q[1] s)" . "\n\n");
    }
    fclose($log_file);
}

After adding the above code, add the following line to the wp-config.php

define('SAVEQUERIES', true);

This will write the SQL queries to a log file within the WordPress home directory. Ensure the file sqlqueries.log in the WordPress home directory is writable by the php. Restart the webserver and refresh the page.

Advertisement