mysqlloggingjdbc

Enabling MySQL general query log with JDBC


Is there a way to enable MySQL general query logging through JDBC? The closest thing I have found through my search is the ability to log slow queries through JDBC (http://dev.mysql.com/doc/refman/5.5/en/connector-j-reference-configuration-properties.html). Maybe I should do that and set the slow query threshold to 0 ms?

I would like to log all queries through MySQL in a human-readable format and would like to specify the location where the log file should be written. I know I will take a performance hit, but my application only has one user and is simple enough that I would be surprised if the performance hit was noticeable. I would like to try it out anyway to see.

I believe another option I have is to turn on binary logging and use mysqlbinlog to convert the binary logs to a human-readable format, but it sounds like the general query log would provide a simpler means of getting what I want.


Solution

  • I ended up finding a workaround. I enable MySQL general query logging through Java by modifying MySQL global system variables at runtime with the following SQL queries.

    SET GLOBAL log_output="FILE"
    SET GLOBAL general_log_file="Path/File"
    SET GLOBAL general_log='ON'
    

    I recommend using forward slashes in the general_log_file path. I could not get backslashes to work, even in a Windows environment.

    I disable general query logging at runtime with the following SQL query.

    SET GLOBAL general_log='OFF'