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}"
|
||||
|
||||
Reference in New Issue
Block a user