################################################################################
# name : log_file_init
# describe: initialize log file, and process log file backup.
# input : null
# output : null
# rerurn : 0:success
# 1:failed
# invoker : private
################################################################################
function log_file_init
{
typeset LOG_FILE_DIR="${HA_LOG_FILE_DIR}"
typeset MAX_LOG_FILE_SIZE=10485760
typeset MAX_LOG_FILE_BACKUP=10
typeset log_file_name="${HA_LOG_FILE}"
if [ ! -f "${log_file_name}" ]; then
if [ ! -d "${LOG_FILE_DIR}" ]; then
mkdir -p "${LOG_FILE_DIR}" > /dev/null 2>&1
typeset rt=$?
chmod 777 "${LOG_FILE_DIR}" > /dev/null 2>&1
if [ $? -ne 0 -o ${rt} -ne 0 ]; then
#echo "Creating log dir: ${LOG_FILE_DIR} failed."
return 1
fi
fi
touch "${log_file_name}" > /dev/null 2>&1
typeset rt=$?
chmod 777 "${log_file_name}" > /dev/null 2>&1
if [ $? -ne 0 -o ${rt} -ne 0 ]; then
#echo "Creating log file: ${log_file_name} failed."
return 1
fi
return 0
fi
typeset file_size=$(wc -c "${log_file_name}" | awk '{ print $1; }')
if [ ${file_size} -ge ${MAX_LOG_FILE_SIZE} ]; then
# backup log file name format: ${log_file_name}.yyyymmdd.n
typeset log_file_base_name=$(basename "${log_file_name}")
typeset bak_log_file_list=$((cd "${LOG_FILE_DIR}"; ls) | sed -n "/^${log_file_base_name}\.[0-9]\{14\}\.[1-9][0-9]*\$/p" | awk -F. -vmaxnum=${MAX_LOG_FILE_BACKUP} '{ if ($4 <= maxnum ) { print $0; } }' | sort -r -t. -k4 -n)
if [ "x${bak_log_file_list}" != "x" ]; then
for logfile in ${bak_log_file_list}
do
typeset leadpart=$(echo "${logfile}" | cut -d. -f1-3)
typeset suffix=$(echo "${logfile}" | cut -d. -f4)
if [ ${suffix} -eq ${MAX_LOG_FILE_BACKUP} ]; then
rm -f "${LOG_FILE_DIR}/${logfile}"
continue
fi
((suffix=suffix+1))
(cd "${LOG_FILE_DIR}"; mv -f "${logfile}" "${leadpart}.${suffix}")
done
fi
mv -f "${log_file_name}" "${log_file_name}.$(date +'%Y%m%d%H%M%S').1"
# recreate a log file
touch "${log_file_name}" > /dev/null 2>&1
typeset rt=$?
chmod 777 "${log_file_name}" > /dev/null 2>&1
if [ $? -ne 0 -o ${rt} -ne 0 ]; then
#echo "Creating log file: ${log_file_name} failed."
return 1
fi
return 0
fi
return 0
}