Files
BPI-CM9-Linux/amlbian/lib/function-log.sh
T

88 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
#
# SPDX-License-Identifier: GPL-2.0
#
# Copyright (c) 2026 AMLOGIC
#
# AMLbian logging helpers
# 将日志等级转换为可比较的数值,数值越大表示严重级别越高
function aml_log_level_value() {
case "$1" in
debug | all)
echo 10
;;
info)
echo 20
;;
warn | warning | wrn)
echo 30
;;
error | err | critical)
echo 40
;;
*)
return 1
;;
esac
}
function aml_log_should_emit() {
local level="$1"
local debuglevel_value
local level_value
if [[ ! -v DEBUGLEVEL ]]; then
return 0
fi
debuglevel_value=$(aml_log_level_value "${DEBUGLEVEL}") || return 1
level_value=$(aml_log_level_value "${level}") || return 1
[[ ${level_value} -ge ${debuglevel_value} ]]
}
function aml_log_validate_debuglevel() {
if [[ ! -v DEBUGLEVEL ]]; then
return 0
fi
if ! aml_log_level_value "${DEBUGLEVEL}" > /dev/null; then
display_alert "Invalid DEBUGLEVEL" "received '${DEBUGLEVEL}'; valid values: debug, info, warn, warning, wrn, error, err, critical, all" "error"
return 1
fi
}
# AMLbian 日志入口
# 参数:$1=等级,$2=消息,$3=详细内容
function aml_log() {
local level="$1"
local message="$2"
local detail="${3:-}"
local AMLbian_message="[AMLbian] ${message}"
case "${level}" in
warning | wrn)
level="warn"
;;
err | critical)
level="error"
;;
all)
level="debug"
;;
esac
if ! aml_log_should_emit "${level}"; then
return 0
fi
if [[ "${level}" == "debug" && -v DEBUGLEVEL ]]; then
SHOW_DEBUG=yes display_alert "${AMLbian_message}" "${detail}" "${level}" || return 0
else
display_alert "${AMLbian_message}" "${detail}" "${level}" || return 0
fi
return 0
}