Add debugging. Don't use -b for the call to sudo.
This commit is contained in:
parent
99279936b8
commit
40902975a8
1 changed files with 16 additions and 2 deletions
18
lumberjack
18
lumberjack
|
|
@ -317,6 +317,11 @@ syslog() {
|
|||
logger --id="$$" -p "$SYSLOG_FACILITY.$1" -t "$NAME" "$1: $2" 2>/dev/null
|
||||
}
|
||||
|
||||
toggle_debug() {
|
||||
(( DEBUG == 0 )) && DEBUG="1" && return
|
||||
(( DEBUG == 1 )) && DEBUG="0" && return
|
||||
}
|
||||
|
||||
|
||||
# Extended globs are required.
|
||||
shopt -s extglob
|
||||
|
|
@ -336,6 +341,8 @@ ORIG_ARGS=()
|
|||
# Some detaults.
|
||||
COMPRESSOR_ARGS=( "-9" )
|
||||
COMPRESSOR="gzip" # Use gzip by default as log processing utils can often natively read gzipped files.
|
||||
DEBUG="0"
|
||||
DEBUG_FILE="/tmp/lumberjack.$$.debug.$RANDOM"
|
||||
INPUT=""
|
||||
INPUTFD="0"
|
||||
MAXJOBS="4"
|
||||
|
|
@ -352,6 +359,7 @@ FLAGS=([flush]=0 [raw]=0 [compress]=0 [make-parents]=0 [created-fifo]=0 [timed-o
|
|||
trap 'sigchld_handler' SIGCHLD
|
||||
trap 'sighup_handler' SIGHUP
|
||||
trap 'syslog "info" "received SIGUSR1 ping request"' SIGUSR1
|
||||
trap 'toggle_debug' SIGUSR2
|
||||
trap 'sigterm_handler' SIGTERM
|
||||
trap 'exit_handler' EXIT
|
||||
|
||||
|
|
@ -542,9 +550,9 @@ TEMPLATE="$2"
|
|||
|
||||
# Apply user and setting.
|
||||
[[ -n "$RUNAS_USER" ]] && {
|
||||
SUDO="$(command -v sudox)"
|
||||
SUDO="$(command -v sudo)"
|
||||
if [[ -n "$SUDO" ]]; then
|
||||
exec "$SUDO" -b -u "$RUNAS_USER" -- "$0" "${ORIG_ARGS[@]}" "$BASEDIR" "$TEMPLATE" || die "failed to exec to change user"
|
||||
exec "$SUDO" -u "$RUNAS_USER" -- "$0" "${ORIG_ARGS[@]}" "$BASEDIR" "$TEMPLATE" || die "failed to exec to change user"
|
||||
else
|
||||
die "cannot exec to change user: sudo not found"
|
||||
fi
|
||||
|
|
@ -563,6 +571,9 @@ while :; do
|
|||
# Start compression jobs if there's any in the queue.
|
||||
start_compression_jobs
|
||||
|
||||
# If debugging is enabled, record the time of entry into the read below.
|
||||
(( DEBUG == 1 )) && printf "%s - %s\n" "$(date "+%Y%m%dT%H%M%S.%N")" "Enter read" >>"$DEBUG_FILE"
|
||||
|
||||
# Read the log line, but timeout at the top of the next second if nothing is read.
|
||||
# Note: The second $(...) expansion should *not* be quoted in this instance, and
|
||||
# the space between $( and (( is necessary to quiet shellcheck.
|
||||
|
|
@ -570,6 +581,9 @@ while :; do
|
|||
read -r -t "0.$(( 999999999 - 10#$(date +%N) ))" -u "$INPUTFD" $( (( FLAGS[raw] == 0 )) && printf "%s" "LOG_VHOST") LOG_DATA
|
||||
ERR="$?"
|
||||
|
||||
# If debugging, record the time of exit from read.
|
||||
(( DEBUG == 1 )) && printf "%s - %s\n" "$(date "+%Y%m%dT%H%M%S.%N")" "Exit read, ERR = $ERR" >>"$DEBUG_FILE"
|
||||
|
||||
# Determine how the read above was exited.
|
||||
if (( ERR > 128 )); then
|
||||
# If 'read' timed out, set a marker.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue