loginit

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值