The error log contains information indicating when mysqld was started and stopped and also any critical errors that occur while the server is running. If mysqld notices a table that needs to be automatically checked or repaired, it writes a 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
If no log file name is specified, the default log file is
in the data directory, unless the
--pid-fileoption is specified. In that case, the default name is the PID file base name with a suffix of
.errin the data directory.
--log-error[=, mysqld writes error messages to an error log file. mysqld writes to the named file if present, creating it in the data directory unless an absolute path name is given to specify a different directory. If no file is named, mysqld writes to the default log file.
--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:
--consoletakes precedence and error messages go to the console. (In MySQL 5.5 and 5.6, the precedence is reversed:
--consoleto be ignored.)
In addition, on Windows, the server by default writes events and
error messages to the Windows Event Log within the Application
log. Entries marked as
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. As of MySQL
5.7.5, information written to the Windows Event Log can be
controlled using the
system variable, as described later.
On Unix and Unix-like systems, mysqld writes error log messages as follows:
--log-error[=, mysqld writes error messages to an error log file. The server uses the named file if present, creating it in the data directory unless an absolute path name is given to specify a different directory. If no file is named, the default name is
in the data directory.
It is common for Yum or APT package installations to configure the error log location to be under
/var/logwith an entry like
log-error=/var/log/mysqld.login a server configuration file; removing the file name from the entry reverts the error log file to its default setting, which is
in the data directory.
At runtime, if the server writes error messages to the console, it
log_error indicates the error log
file name. In particular, on Windows,
--console overrides use of an error
log file and sends error messages to the console, so the server
stderr. This occurs even if
--log-error is also given.
On Unix and Unix-like systems, it is possible to write the error
syslog. To control logging to
syslog in MySQL 5.7.5 or later, use these
log_syslog: Enable this variable to send the error log to
syslog. In this case, the following system variables can also be used for finer control.
log_syslog_facility: The default facility for
daemon. Set this variable to specify a different facility.
log_syslog_include_pid: Whether to include the server process ID in each line of
log_syslog_tag: This variable defines a tag to add to the server identifier (
syslogmessages. If defined, the tag is appended to the identifier with a leading hyphen.
Before MySQL 5.7.5, control of output to
is available only on Unix and Unix-like systems and is handled by
mysqld_safe, which captures server error output
and passes it to
syslog. (On Windows, logging
to the Event Log is enabled by default and cannot be disabled.)
As of MySQL 5.7.5, using mysqld_safe for
syslog error logging is deprecated; you
should use the server system variables instead.
mysqld_safe has three error-logging options,
--log-error. The default
with no logging options or with
is to use the default log file. To explicitly specify use of an
error log file, specify
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
this is appended to the
identifier with a leading hyphen.
As of MySQL 5.7.2, the
variable controls verbosity of the server in 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”.
Before MySQL 5.7.2, the
log_warnings system variable can
be used to control warning logging to the error log. By default,
log_warnings is enabled
(nonzero). Warning logging can be disabled using a value of 0. The
server logs messages about statements that are unsafe for
statement-based logging if the value is greater than 0, and logs
aborted connections and access-denied errors for new connection
attempts if the value is greater than 1. See
Section B.5.2.11, “Communication Errors and Aborted Connections”.
As of MySQL 5.7.2, 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). Before MySQL
5.7.2, messages use the local system time zone.
As of MySQL 5.7.2, 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. Before MySQL 5.7.2, the ID in error log messages is that of the mysqld process ID.
If you flush the logs using
FLUSH LOGS or
mysqladmin flush-logs and
mysqld is writing the error log to a file (for
example, if it was started with the
--log-error option), the server
closes and reopens the log file. To rename the file, do so
manually before flushing. Then flushing the logs reopens a new
file with the original file name. For example, you can rename the
file and create a new one using the following commands:
On Windows, use rename rather than mv.
If the server is not writing to a named file, no error log renaming occurs when the logs are flushed.