ansible/roles/syslogd/files/syslog-archive.sh

30 lines
583 B
Bash
Executable file

#!/bin/sh
set -eu
umask 027
_date="$(date +%Y-%m-%d)"
_logfile="/srv/log/all.log"
_archivedir="$(dirname "$_logfile")/archive/$(date +%Y)"
if [ -f "$_logfile" ]; then
if [ ! -s "$_logfile" ]; then
echo "ERROR: Not rotating empty logfile '${_logfile}'" 1>&2
exit 1
fi
else
echo "ERROR: Cannot find logfile '${_logfile}'" 1>&2
exit 1
fi
_dest="${_archivedir}/$(basename "$_logfile").${_date}"
[ -d "$_archivedir" ] || mkdir "$_archivedir"
mv "$_logfile" "${_dest}"
touch "$_logfile"
kill -HUP "$(cat /var/run/syslog.pid)"
nice gzip -f "$_dest"