mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge ramayana.hindu.god:/home/tsmith/m/bk/maint/51-b29992
into ramayana.hindu.god:/home/tsmith/m/bk/maint/51
This commit is contained in:
@ -14,12 +14,17 @@
|
||||
KILL_MYSQLD=1;
|
||||
MYSQLD=
|
||||
niceness=0
|
||||
# Default on, unless --log-error is specified (and before options are parsed)
|
||||
syslog=2
|
||||
# Initial logging status: error log is not open, and not using syslog
|
||||
logging=init
|
||||
want_syslog=0
|
||||
syslog_tag=
|
||||
user=@MYSQLD_USER@
|
||||
pid_file=
|
||||
err_log=
|
||||
|
||||
syslog_tag_mysqld=mysqld
|
||||
syslog_tag_mysqld_safe=mysqld_safe
|
||||
|
||||
trap '' 1 2 3 15 # we shouldn't let anyone kill us
|
||||
|
||||
umask 007
|
||||
@ -46,7 +51,8 @@ Usage: $0 [OPTIONS]
|
||||
--nice=NICE Set the scheduling priority of mysqld
|
||||
--skip-kill-mysqld Don't try to kill stray mysqld processes
|
||||
--syslog Log messages to syslog with 'logger'
|
||||
--skip-syslog Log messages to error log
|
||||
--skip-syslog Log messages to error log (default)
|
||||
--syslog-tag=TAG Pass -t "mysqld-TAG" to 'logger'
|
||||
|
||||
All other options are passed to the mysqld program.
|
||||
|
||||
@ -54,18 +60,46 @@ EOF
|
||||
exit 1
|
||||
}
|
||||
|
||||
my_which ()
|
||||
{
|
||||
save_ifs="${IFS-UNSET}"
|
||||
IFS=:
|
||||
for file
|
||||
do
|
||||
for dir in $PATH
|
||||
do
|
||||
if [ -f "$dir/$file" ]
|
||||
then
|
||||
echo "$dir/$file"
|
||||
continue 2
|
||||
fi
|
||||
done
|
||||
return 1 # Failure, didn't find file in path
|
||||
done
|
||||
if [ "$save_ifs" = UNSET ]
|
||||
then
|
||||
unset IFS
|
||||
else
|
||||
IFS="$save_ifs"
|
||||
fi
|
||||
return 0 # Success
|
||||
}
|
||||
|
||||
log_generic () {
|
||||
priority="$1"
|
||||
shift
|
||||
|
||||
msg="`date +'%y%m%d %H:%M:%S'` mysqld_safe $*"
|
||||
echo "$msg"
|
||||
if [ $syslog -eq 0 ]
|
||||
then
|
||||
echo "$msg" >> "$err_log"
|
||||
else
|
||||
logger -i -t mysqld_safe -p "$priority" "$*"
|
||||
fi
|
||||
case $logging in
|
||||
init) ;; # Just echo the message, don't save it anywhere
|
||||
file) echo "$msg" >> "$err_log" ;;
|
||||
syslog) logger -t "$syslog_tag_mysqld_safe" -p "$priority" "$*" ;;
|
||||
*)
|
||||
echo "Internal program error (non-fatal):" \
|
||||
" unknown logging method '$logging'" >&2
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
log_error () {
|
||||
@ -78,15 +112,23 @@ log_notice () {
|
||||
|
||||
eval_log_error () {
|
||||
cmd="$1"
|
||||
if [ $syslog -eq 0 ]
|
||||
then
|
||||
cmd="$cmd >> "`shell_quote_string "$err_log"`" 2>&1"
|
||||
else
|
||||
# mysqld often (not always) prefixes messages on stdout with a
|
||||
# timestamp in the form of '%y%m%d %H:%M:%S '; this is redundant
|
||||
# when logging via syslog, so strip it
|
||||
cmd="$cmd 2>&1 | sed -e 's/^[0-9]\{6\} [0-9:]\{8\} *//' | logger -i -t mysqld -p daemon.error"
|
||||
fi
|
||||
case $logging in
|
||||
file) cmd="$cmd >> "`shell_quote_string "$err_log"`" 2>&1" ;;
|
||||
syslog)
|
||||
# mysqld often prefixes its messages with a timestamp, which is
|
||||
# redundant when logging to syslog (which adds its own timestamp)
|
||||
# However, we don't strip the timestamp with sed here, because
|
||||
# sed buffers output (only GNU sed supports a -u (unbuffered) option)
|
||||
# which means that messages may not get sent to syslog until the
|
||||
# mysqld process quits.
|
||||
cmd="$cmd 2>&1 | logger -t '$syslog_tag_mysqld' -p daemon.error"
|
||||
;;
|
||||
*)
|
||||
echo "Internal program error (non-fatal):" \
|
||||
" unknown logging method '$logging'" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
#echo "Running mysqld: [$cmd]"
|
||||
eval "$cmd"
|
||||
}
|
||||
@ -138,8 +180,9 @@ parse_arguments() {
|
||||
--nice=*) niceness="$val" ;;
|
||||
--open-files-limit=*) open_files="$val" ;;
|
||||
--skip-kill-mysqld*) KILL_MYSQLD=0 ;;
|
||||
--syslog) syslog=1 ;;
|
||||
--skip-syslog) syslog=0 ;;
|
||||
--syslog) want_syslog=1 ;;
|
||||
--skip-syslog) want_syslog=0 ;;
|
||||
--syslog-tag=*) syslog_tag="$val" ;;
|
||||
--timezone=*) TZ="$val"; export TZ; ;;
|
||||
|
||||
--help) usage ;;
|
||||
@ -252,7 +295,19 @@ parse_arguments `$print_defaults $defaults --loose-verbose mysqld_safe safe_mysq
|
||||
parse_arguments PICK-ARGS-FROM-ARGV "$@"
|
||||
|
||||
# Determine what logging facility to use
|
||||
if [ -n "$err_log" -o $syslog -eq 0 ]
|
||||
|
||||
# Ensure that 'logger' exists, if it's requested
|
||||
if [ $want_syslog -eq 1 ]
|
||||
then
|
||||
my_which logger > /dev/null 2>&1
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
log_error "--syslog requested, but no 'logger' program found."
|
||||
want_syslog=0
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -n "$err_log" -o $want_syslog -eq 0 ]
|
||||
then
|
||||
if [ -n "$err_log" ]
|
||||
then
|
||||
@ -279,14 +334,25 @@ then
|
||||
|
||||
append_arg_to_args "--log-error=$err_log"
|
||||
|
||||
if [ $syslog -eq 1 ]
|
||||
if [ $want_syslog -eq 1 ]
|
||||
then
|
||||
# User explicitly asked for syslog, so warn that it isn't used
|
||||
log_error "Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect. Logging to '$err_log'."
|
||||
log_error "Can't log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect."
|
||||
fi
|
||||
|
||||
# Don't use syslog since syslog and error log don't mix well
|
||||
syslog=0
|
||||
# Log to err_log file
|
||||
log_notice "Logging to '$err_log'."
|
||||
logging=file
|
||||
else
|
||||
if [ -n "$syslog_tag" ]
|
||||
then
|
||||
# Sanitize the syslog tag
|
||||
syslog_tag=`echo "$syslog_tag" | sed -e 's/[^a-zA-Z0-9_-]/_/g'`
|
||||
syslog_tag_mysqld_safe="${syslog_tag_mysqld_safe}-$syslog_tag"
|
||||
syslog_tag_mysqld="${syslog_tag_mysqld}-$syslog_tag"
|
||||
fi
|
||||
log_notice "Logging to syslog."
|
||||
logging=syslog
|
||||
fi
|
||||
|
||||
USER_OPTION=""
|
||||
|
Reference in New Issue
Block a user