################################################################################ # 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 }