shell脚本编写中通用的日志与异常捕获函数,每次写shell都可以使用

set -eo pipefail

# ------------------------------------------------------------------------------
# 1. 全局变量与配色
# ------------------------------------------------------------------------------
COLOR_RED='\033[0;31m'
COLOR_GREEN='\033[0;32m'
COLOR_YELLOW='\033[0;33m'
COLOR_BLUE='\033[0;34m'
COLOR_RESET='\033[0m'

LOG_FILE="log_$(date +%Y%m%d_%H%M%S).log"

# 离线资源源路径
WORD_ROOT="/opt/installer"

# ------------------------------------------------------------------------------
# 2. 日志与异常捕捉函数
# ------------------------------------------------------------------------------
log() {
    local level="$1"
    local message="$2"
    local timestamp
    timestamp=$(date "+%Y-%m-%d %H:%M:%S")
    echo -e "${timestamp} [${level}] ${message}" | tee -a "${LOG_FILE}"
}

log_info()    { log "${COLOR_BLUE}INFO${COLOR_RESET}" "$1"; }
log_success() { log "${COLOR_GREEN}SUCCESS${COLOR_RESET}" "$1"; }
log_warn()    { log "${COLOR_YELLOW}WARN${COLOR_RESET}" "$1"; }
log_error()   { log "${COLOR_RED}ERROR${COLOR_RESET}" "$1"; }

trap 'on_failure $? $LINENO' ERR

on_failure() {
    local exit_code=$1
    local line_no=$2
    log_error "离线部署中断!错误发生在第 ${line_no} 行,退出码: ${exit_code}。请查看日志: ${LOG_FILE}"
    exit "${exit_code}"
}

  

posted @ 2026-08-03 16:52  mofy  阅读(3)  评论(0)    收藏  举报