feat: 实现日志级别功能并修复日志输出问题
- 实现 logging.level 配置项支持(DEBUG/INFO/WARN/ERROR) - 修复日志文件中 ANSI 颜色代码显示问题 - 修复 install.sh 中 show_info() 函数颜色显示 - 日志输出现在会根据配置的级别进行过滤
This commit is contained in:
@@ -23,6 +23,17 @@ GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# 日志级别映射
|
||||
declare -A LOG_LEVEL_MAP=(
|
||||
["DEBUG"]=0
|
||||
["INFO"]=1
|
||||
["WARN"]=2
|
||||
["ERROR"]=3
|
||||
)
|
||||
|
||||
# 当前日志级别(默认 INFO)
|
||||
CURRENT_LOG_LEVEL=1
|
||||
|
||||
###############################################################################
|
||||
# 日志函数
|
||||
###############################################################################
|
||||
@@ -33,12 +44,22 @@ log() {
|
||||
local message="$@"
|
||||
local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
|
||||
|
||||
# 获取当前日志级别的数值
|
||||
local level_value=${LOG_LEVEL_MAP[$level]:-1}
|
||||
|
||||
# 如果日志级别低于配置的级别,则不输出
|
||||
if [[ $level_value -lt $CURRENT_LOG_LEVEL ]]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
# 输出到 stderr,避免干扰函数返回值
|
||||
echo -e "[${timestamp}] [${level}] ${message}" >&2
|
||||
|
||||
# 如果配置了日志文件,同时写入文件
|
||||
if [[ -n "${LOG_FILE}" ]] && [[ "${LOGGING_ENABLED}" == "true" ]]; then
|
||||
echo "[${timestamp}] [${level}] ${message}" >> "${LOG_FILE}"
|
||||
# 移除 ANSI 颜色代码后写入文件
|
||||
local clean_message=$(echo -e "${message}" | sed 's/\x1b\[[0-9;]*m//g')
|
||||
echo "[${timestamp}] [${level}] ${clean_message}" >> "${LOG_FILE}"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -138,6 +159,18 @@ load_config() {
|
||||
# 读取日志配置
|
||||
LOGGING_ENABLED=$(yq eval '.logging.enabled' "${CONFIG_FILE}")
|
||||
LOG_FILE=$(yq eval '.logging.log_file' "${CONFIG_FILE}")
|
||||
LOG_LEVEL=$(yq eval '.logging.level' "${CONFIG_FILE}")
|
||||
|
||||
# 设置日志级别
|
||||
if [[ -n "${LOG_LEVEL}" ]] && [[ "${LOG_LEVEL}" != "null" ]]; then
|
||||
# 转换为大写
|
||||
LOG_LEVEL=$(echo "${LOG_LEVEL}" | tr '[:lower:]' '[:upper:]')
|
||||
# 设置当前日志级别
|
||||
CURRENT_LOG_LEVEL=${LOG_LEVEL_MAP[$LOG_LEVEL]:-1}
|
||||
log_info "日志级别设置为: ${LOG_LEVEL}"
|
||||
else
|
||||
log_info "使用默认日志级别: INFO"
|
||||
fi
|
||||
|
||||
# 创建输出目录
|
||||
mkdir -p "${OUTPUT_DIR}"
|
||||
|
||||
114
install.sh
114
install.sh
@@ -343,53 +343,51 @@ test_backup() {
|
||||
###############################################################################
|
||||
|
||||
show_info() {
|
||||
cat << EOF
|
||||
|
||||
${GREEN}╔═══════════════════════════════════════════════════════════════╗
|
||||
║ Docker Backup 安装完成! ║
|
||||
╚═══════════════════════════════════════════════════════════════╝${NC}
|
||||
|
||||
${BLUE}安装信息:${NC}
|
||||
- 备份脚本: ${BIN_DIR}/docker-backup
|
||||
- 清理脚本: ${BIN_DIR}/docker-backup-cleanup
|
||||
- 配置文件: ${CONFIG_DIR}/config.yml
|
||||
- 服务名称: ${SERVICE_NAME}
|
||||
|
||||
${BLUE}常用命令:${NC}
|
||||
# 查看定时任务状态
|
||||
systemctl status ${SERVICE_NAME}.timer
|
||||
|
||||
# 查看定时计划
|
||||
systemctl list-timers ${SERVICE_NAME}.timer
|
||||
|
||||
# 手动执行备份
|
||||
docker-backup
|
||||
|
||||
# 列出所有备份
|
||||
docker-backup-cleanup --list
|
||||
|
||||
# 清理旧备份
|
||||
docker-backup-cleanup --auto
|
||||
|
||||
# 停止定时任务
|
||||
systemctl stop ${SERVICE_NAME}.timer
|
||||
|
||||
# 禁用定时任务
|
||||
systemctl disable ${SERVICE_NAME}.timer
|
||||
|
||||
${YELLOW}重要提示:${NC}
|
||||
1. 请编辑配置文件以适应您的环境:
|
||||
vi ${CONFIG_DIR}/config.yml
|
||||
|
||||
2. 修改配置后无需重启服务,下次执行时自动生效
|
||||
|
||||
3. 查看下次执行时间:
|
||||
systemctl list-timers | grep ${SERVICE_NAME}
|
||||
|
||||
4. 查看备份日志:
|
||||
journalctl -u ${SERVICE_NAME}.service -f
|
||||
|
||||
EOF
|
||||
echo ""
|
||||
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ Docker Backup 安装完成! ║${NC}"
|
||||
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}安装信息:${NC}"
|
||||
echo " - 备份脚本: ${BIN_DIR}/docker-backup"
|
||||
echo " - 清理脚本: ${BIN_DIR}/docker-backup-cleanup"
|
||||
echo " - 配置文件: ${CONFIG_DIR}/config.yml"
|
||||
echo " - 服务名称: ${SERVICE_NAME}"
|
||||
echo ""
|
||||
echo -e "${BLUE}常用命令:${NC}"
|
||||
echo " # 查看定时任务状态"
|
||||
echo " systemctl status ${SERVICE_NAME}.timer"
|
||||
echo ""
|
||||
echo " # 查看定时计划"
|
||||
echo " systemctl list-timers ${SERVICE_NAME}.timer"
|
||||
echo ""
|
||||
echo " # 手动执行备份"
|
||||
echo " docker-backup"
|
||||
echo ""
|
||||
echo " # 列出所有备份"
|
||||
echo " docker-backup-cleanup --list"
|
||||
echo ""
|
||||
echo " # 清理旧备份"
|
||||
echo " docker-backup-cleanup --auto"
|
||||
echo ""
|
||||
echo " # 停止定时任务"
|
||||
echo " systemctl stop ${SERVICE_NAME}.timer"
|
||||
echo ""
|
||||
echo " # 禁用定时任务"
|
||||
echo " systemctl disable ${SERVICE_NAME}.timer"
|
||||
echo ""
|
||||
echo -e "${YELLOW}重要提示:${NC}"
|
||||
echo " 1. 请编辑配置文件以适应您的环境:"
|
||||
echo " vi ${CONFIG_DIR}/config.yml"
|
||||
echo ""
|
||||
echo " 2. 修改配置后无需重启服务,下次执行时自动生效"
|
||||
echo ""
|
||||
echo " 3. 查看下次执行时间:"
|
||||
echo " systemctl list-timers | grep ${SERVICE_NAME}"
|
||||
echo ""
|
||||
echo " 4. 查看备份日志:"
|
||||
echo " journalctl -u ${SERVICE_NAME}.service -f"
|
||||
echo ""
|
||||
}
|
||||
|
||||
###############################################################################
|
||||
@@ -509,18 +507,16 @@ main() {
|
||||
done
|
||||
|
||||
# 显示欢迎信息
|
||||
cat << EOF
|
||||
${GREEN}╔═══════════════════════════════════════════════════════════════╗
|
||||
║ 欢迎使用 Docker Backup 安装程序 ║
|
||||
╚═══════════════════════════════════════════════════════════════╝${NC}
|
||||
|
||||
安装配置:
|
||||
- 服务名称: ${SERVICE_NAME}
|
||||
- 定时计划: ${SCHEDULE}
|
||||
- 配置目录: ${CONFIG_DIR}
|
||||
- 脚本目录: ${BIN_DIR}
|
||||
|
||||
EOF
|
||||
echo -e "${GREEN}╔═══════════════════════════════════════════════════════════════╗${NC}"
|
||||
echo -e "${GREEN}║ 欢迎使用 Docker Backup 安装程序 ║${NC}"
|
||||
echo -e "${GREEN}╚═══════════════════════════════════════════════════════════════╝${NC}"
|
||||
echo ""
|
||||
echo "安装配置:"
|
||||
echo " - 服务名称: ${SERVICE_NAME}"
|
||||
echo " - 定时计划: ${SCHEDULE}"
|
||||
echo " - 配置目录: ${CONFIG_DIR}"
|
||||
echo " - 脚本目录: ${BIN_DIR}"
|
||||
echo ""
|
||||
|
||||
# 检查 root 权限
|
||||
check_root
|
||||
|
||||
Reference in New Issue
Block a user