content_image/753446.jpg
If the server is not writing to a named error log file, no error log file renaming occurs when the error log is flushed. 

## 5.4.3 The General Query Log 

The general query log is a general record of what mysqld  is doing. The server writes information to this log when clients connect or disconnect, and it logs each SQL statement received from clients. The general query log can be very useful when you suspect an error in a client and want to know exactly what the client sent to mysqld . 

Each line that shows when a client connects also includes using connection_type  to indicate the protocol used to establish the connection. connection_type  is one of TCP/IP  (TCP/IP connection established without SSL), SSL/TLS  (TCP/IP connection established with SSL), Socket  (Unix socket file connection), Named Pipe  (Windows named pipe connection), or Shared Memory  (Windows shared memory connection). 

mysqld  writes statements to the query log in the order that it receives them, which might differ from the order in which they are executed. This logging order is in contrast with that of the binary log, for which statements are written after they are executed but before any locks are released. In addition, the query log may contain statements that only select data while such statements are never written to the binary log. 

When using statement-based binary logging on a replication source server, statements received by its replicas are written to the query log of each replica. Statements are written to the query log of the source if a client reads events with the mysqlbinlog  utility and passes them to the server. 

However, when using row-based binary logging, updates are sent as row changes rather than SQL statements, and thus these statements are never written to the query log when binlog_format  is ROW . A given update also might not be written to the query log when this variable is set to MIXED , depending on the statement used. See Section 17.2.1.1, “Advantages and Disadvantages of Statement-Based and Row- Based Replication” , for more information. 

By default, the general query log is disabled. To specify the initial general query log state explicitly, use --general_log[={0|1}] . With no argument or an argument of 1, --general_log  enables the log. With an argument of 0, this option disables the log. To specify a log file name, use -- general_log_file= file_name . To specify the log destination, use the log_output  system variable (as described in Section 5.4.1, “Selecting General Query Log and Slow Query Log Output Destinations” ). 

<img src='content_image/753446.jpg'>

## Note 

If you specify the TABLE  log destination, see Log Tables and “Too many open files” Errors. 

If you specify no name for the general query log file, the default name is host_name .log . The server creates the file in the data directory unless an absolute path name is given to specify a different directory. 

To disable or enable the general query log or change the log file name at runtime, use the global general_log  and general_log_file  system variables. Set general_log  to 0 (or OFF ) to disable the log or to 1 (or ON ) to enable it. Set general_log_file  to specify the name of the log file. If a log file already is open, it is closed and the new file is opened. 

When the general query log is enabled, the server writes output to any destinations specified by the log_output  system variable. If you enable the log, the server opens the log file and writes startup messages to it. However, further logging of queries to the file does not occur unless the FILE  log destination is selected. If the destination is NONE , the server writes no queries even if the general log is enabled. Setting the log file name has no effect on logging if the log destination value does not contain FILE . 

