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.
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 24.5, “Debugging and Porting MySQL”.
If mysqld_safe is used to start
mysqld and mysqld exits
abnormally, mysqld_safe notices this, 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. (For example, if invoked with the
--syslog option,
mysqld_safe arranges for the server's
stderr to be sent to syslog,
as described later.)
On Windows, the --log-error,
--pid-file, and
--console options affect error
logging:
Without --log-error,
mysqld writes error messages to the default
log file.
With
--log-error[=,
mysqld writes error messages to an error
log file. If no file is named, mysqld
writes to the default log file. If a file is named,
mysqld writes to it, creating it in the
data directory unless an absolute path name is given to
specify a different directory.
file_name]
The default log file is
in the data directory, unless the
host_name.err--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, unless --log-error is
also given. If both options are present,
--console is ignored and has no
effect. Their order does not matter:
--log-error takes precedence
and error messages go to a log file.
In addition, on Windows, the server writes events and error
messages to the Windows Event Log within the Application log.
Entries marked as 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. You cannot disable writing information
to the Windows Event Log.
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[=,
mysqld writes error messages to an error
log file. If no file is named, mysqld
writes to the default log file. If a file is named,
mysqld writes to it, creating it in the
data directory unless an absolute path name is given to
specify a different directory.
file_name]
It is common for Yum or APT package installations to
configure the error log location to be 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.
The default log file is
in the data directory. This default is used if
host_name.err--log-error is given without
naming a log file.
The log_error system variable
indicates the error log file name if error output is written to a
file.
If you specify --log-error in an
option file in a [mysqld],
[server], or [mysqld_safe]
section, mysqld_safe finds and uses the option.
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. Flushing the logs then reopens 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
shell>mvshell>host_name.errhost_name.err-oldmysqladmin flush-logsshell>mvhost_name.err-oldbackup-directory
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.
If you use mysqld_safe to start
mysqld, mysqld_safe arranges
for mysqld to write error messages to a log
file or to syslog.
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=
to mysqld_safe, and
mysqld_safe will arrange for
mysqld to write messages to a log file. To use
file_namesyslog instead, specify the
--syslog option.
The --log-warnings option or
log_warnings system variable
controls warning logging to the error log. The default value is
enabled (1). To disable warning logging, set
--log-warnings or
log_warnings to 0. If the value
is greater than 1, aborted connections are written to the error
log, and access-denied errors for new connection attempts are
written. See Section B.5.2.11, “Communication Errors and Aborted Connections”.