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