Documentation Home
MySQL 5.7 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 37.9Mb
PDF (A4) - 37.9Mb
PDF (RPM) - 37.3Mb
HTML Download (TGZ) - 10.2Mb
HTML Download (Zip) - 10.3Mb
HTML Download (RPM) - 8.9Mb
Man Pages (TGZ) - 214.6Kb
Man Pages (Zip) - 327.5Kb
Info (Gzip) - 3.4Mb
Info (Zip) - 3.4Mb
Excerpts from this Manual

5.4.2 The Error Log

The error log contains a record of mysqld startup and shutdown times. It also contains diagnostic messages such as errors, warnings, and notes that occur during server startup, shutdown, and while the server is running. For example, if mysqld notices a table that needs to be automatically checked or repaired, it writes a message to the error log.

On some operating systems, the error log contains a stack trace if mysqld exits abnormally. The trace can be used to determine where mysqld exited. See Section 28.5, “Debugging and Porting MySQL”.

Interpretation of error logging options differs somewhat for Windows and Unix systems, so be sure to use the information appropriate to your system.

mysqld_safe may write messages to the error log if it is used to start mysqld. For example, when mysqld_safe notices abnormal mysqld exits, it restarts mysqld and writes a mysqld restarted message to the error log.

In the following discussion, console means stderr, the standard error output. This is your terminal or console window unless the standard error output has been redirected.

Error Logging on Windows

On Windows, mysqld writes error log messages as follows:

  • Without --log-error, mysqld writes error messages to the default log file.

  • With --log-error[=file_name], mysqld writes error messages to an error log file. If the option names no file, mysqld writes to the default log file. If the option names a file, mysqld writes to it, creating it under the data directory unless an absolute path name is given to specify a different location.

  • The default log file is host_name.err in the data directory, unless the --pid-file option is specified. In that case, the default name is the PID file base name with a suffix of .err in the data directory. This default is used if --log-error is not given, or is given without naming a log file.

  • With --console, mysqld writes error messages to the console. --log-error, if given, is ignored and has no effect. If both options are present, their order does not matter: --console takes precedence and error messages go to the console. (In MySQL 5.5 and 5.6, the precedence is reversed: --log-error causes --console to be ignored.)

In addition, the server by default writes events and error messages to the Windows Event Log within the Application log.

  • Entries marked as Error, Warning, and Note are written to the Event Log, but not informational messages such as information statements from individual storage engines.

  • These log entries have a source of MySQL.

  • Information written to the Windows Event Log can be controlled using the log_syslog system variable. See Using the Event Log or Syslog for the Error Log.

If the server writes error messages to the console, it sets the log_error system variable to stderr. Otherwise, log_error indicates the error log file name. --console overrides use of an error log file and sends error messages to the console, so the server sets log_error to stderr. This occurs even if --log-error is also given.

Error Logging on Unix and Unix-Like Systems

On Unix and Unix-like systems, mysqld writes error log messages as follows:

  • Without --log-error, mysqld writes error messages to the console.

  • With --log-error[=file_name], mysqld writes error messages to an error log file. If the option names no file, mysqld writes to the default log file. If the option names a file, mysqld writes to it, creating it under the data directory unless an absolute path name is given to specify a different location.

  • The default log file is host_name.err in the data directory. This default is used if --log-error is given without naming a log file.

Note

It is common for Yum or APT package installations to configure an error log location under /var/log with an entry like log-error=/var/log/mysqld.log in a server configuration file. Removing the file name from the entry causes the default log file to be used, which is written to the data directory.

If the server writes error messages to the console, it sets the log_error system variable to stderr. Otherwise, log_error indicates the error log file name.

If you specify --log-error in an option file in a [mysqld], [server], or [mysqld_safe] section, mysqld_safe finds and uses the option.

Using the Event Log or Syslog for the Error Log

It is possible to have mysqld write the error log to syslog on Unix and Unix-like systems, and to the Windows Event Log on Windows. To do so, use these system variables:

  • log_syslog: Enable this variable to send the error log to syslog. (On Windows, this variable is enabled by default.)

    If log_syslog is enabled, the following system variables can also be used for finer control.

  • log_syslog_facility: The default facility for syslog messages is daemon. Set this variable to specify a different facility.

  • log_syslog_include_pid: Whether to include the server process ID in each line of syslog output.

  • log_syslog_tag: This variable defines a tag to add to the server identifier (mysqld) in syslog messages. If defined, the tag is appended to the identifier with a leading hyphen.

On Unix and Unix-like systems, control of output to syslog is also available using mysqld_safe, which can capture server error output and pass it to syslog.

Note

Using mysqld_safe for syslog error logging is deprecated; you should use the server system variables instead.

mysqld_safe has three error-logging options, --syslog, --skip-syslog, and --log-error. The default with no logging options or with --skip-syslog is to use the default log file. To explicitly specify use of an error log file, specify --log-error=file_name to mysqld_safe, and mysqld_safe will arrange for mysqld to write messages to a log file. To use syslog instead, specify the --syslog option. For syslog output, a tag can be specified with --syslog-tag=tag_val; this is appended to the mysqld server identifier with a leading hyphen.

Error Log Verbosity

The log_error_verbosity system variable controls server verbosity for writing error, warning, and note messages to the error log. Permitted values are 1 (errors only), 2 (errors and warnings), 3 (errors, warnings, and notes), with a default of 3. If the value is greater than 2, the server logs aborted connections and access-denied errors for new connection attempts. See Section B.5.2.11, “Communication Errors and Aborted Connections”.

Error Log Message Format

The log_timestamps system variable controls the timestamp time zone of messages written to the error log (as well as to general query log and slow query log files). Permitted values are UTC (the default) and SYSTEM (local system time zone).

The ID included in error log messages is that of the thread within mysqld responsible for writing the message. This indicates which part of the server produced the message, and is consistent with general query log and slow query log messages, which include the connection thread ID.

Flushing and Renaming the Error Log File

If mysqld is writing the error log to a file and you flush the logs using FLUSH LOGS or mysqladmin flush-logs, the server closes and reopens the log file. To rename the file, do so manually before flushing. Flushing the logs then opens a new file with the original file name. For example, to rename the file and create a new one, use the following commands (assuming a log file name of host_name.err):

host_name.err host_name.err-old
mysqladmin flush-logs
mv host_name.err-old backup-directory

On Windows, use rename rather than mv.

If the location of the error file is not writable by the server, the log-flushing operation fails to create a new log file. For example, on Linux, the server might write the error log as /var/log/mysqld.log, where /var/log is owned by root and not writable by mysqld. For information about handling this case, see Section 5.4.7, “Server Log Maintenance”.

If the server is not writing to a named file, no error log renaming occurs when the logs are flushed.


User Comments
Sign Up Login You must be logged in to post a comment.