214 lines
5.8 KiB
Plaintext
214 lines
5.8 KiB
Plaintext
|
|
|
||
|
|
#!/bin/bash
|
||
|
|
cd "$(dirname "$(readlink -f "$0")")"
|
||
|
|
|
||
|
|
G_DIR="../log"
|
||
|
|
LOG_DIR=${G_DIR}
|
||
|
|
|
||
|
|
|
||
|
|
# Help function
|
||
|
|
function help() {
|
||
|
|
echo -e "Usage: \n\t$(basename "$0") <program_name> {-t|-d|-i|-w|-e|-f}\n"
|
||
|
|
echo -e " \t$(basename "$0") [-t|-d|-i|-w|-e|-f] program_name \n"
|
||
|
|
echo -e "\t -t|-v : \t Extract lines with [T]race level: 6 "
|
||
|
|
echo -e "\t -d : \t Extract lines with [D]ebug level: 5 "
|
||
|
|
echo -e "\t -i : \t Extract lines with [I]nfo level: 4 "
|
||
|
|
echo -e "\t -w : \t Extract lines with [W]arn level: 3 "
|
||
|
|
echo -e "\t -e : \t Extract lines with [E]rror level: 2 "
|
||
|
|
echo -e "\t -c|-f : \t Extract lines with [C]ritical(Fault) 1 "
|
||
|
|
echo -e "\t -err : \t Extract lines with [E]rror level: 2 for error.log"
|
||
|
|
echo -e "\t -clear: \t Clear the log file for the specified program, but Reverse error.log"
|
||
|
|
echo -e "\t -g : \t Get <program> log level:\t manage logic tcpcomm uartcomm ..."
|
||
|
|
echo -e "\t -s <L>: \t Set <program> log level x: [1-C, 2-E, 3-W, 4-I, 5-D, 6-T] "
|
||
|
|
echo -e ""
|
||
|
|
}
|
||
|
|
|
||
|
|
# Clear log file function
|
||
|
|
function clear_log() {
|
||
|
|
local program_name=$1
|
||
|
|
log_file="${LOG_DIR}/$program_name/$program_name.log"
|
||
|
|
log_err_file="${LOG_DIR}/$program_name/${program_name}_error.log"
|
||
|
|
if [ -f "$log_file" ]; then
|
||
|
|
> "$log_file"
|
||
|
|
echo "Log file for $program_name cleared."
|
||
|
|
# > "$log_err_file"
|
||
|
|
# echo "Log file for ${program_name}_error cleared."
|
||
|
|
else
|
||
|
|
echo "Log file for $program_name does not exist."
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
# Extract log function
|
||
|
|
function extract_log() {
|
||
|
|
local level=$1
|
||
|
|
local program_name=$2
|
||
|
|
#log_file="${LOG_DIR}/$program_name/$program_name.log"
|
||
|
|
log_file="$(ls -t ${LOG_DIR}/$program_name/${program_name}*.log|head -n1)"
|
||
|
|
log_err_file="$(ls -t ${LOG_DIR}/$program_name/${program_name}_error.log|head -n1)"
|
||
|
|
|
||
|
|
if [ -f "$log_file" ]; then
|
||
|
|
|
||
|
|
case "$level" in
|
||
|
|
T|t|Trace|trace|V|v|Verbose|verbose)
|
||
|
|
tail -f "$log_file" #| grep -E "\[T|Trace\]"
|
||
|
|
;;
|
||
|
|
D|d|Debug|debug)
|
||
|
|
tail -f "$log_file" | grep -vE "\[T|Trace\]" #| grep -E "\[D|Debug\]"
|
||
|
|
;;
|
||
|
|
I|i|Info|info)
|
||
|
|
tail -f "$log_file" | grep -vE "\[T|Trace\]|\[D|Debug\]" # | grep -E "\[I|Info\]"
|
||
|
|
;;
|
||
|
|
W|w|Warn|warn)
|
||
|
|
tail -f "$log_file" | grep -vE "\[T|Trace\]|\[D|Debug\]|\[I|Info\]" # | grep -E "\[W|Warn\]"
|
||
|
|
;;
|
||
|
|
E|e|Error)
|
||
|
|
tail -f "$log_file" | grep -vE "\[T|Trace\]|\[D|Debug\]|\[I|Info\]|\[W|Warn\]" # | grep -E "\[E|Error\]"
|
||
|
|
;;
|
||
|
|
err|error)
|
||
|
|
tail -f "$log_err_file"
|
||
|
|
;;
|
||
|
|
C|c|Critical|critical|F|f|Fault|fault)
|
||
|
|
tail -f "$log_file" | grep -E "\[C|Critical\]"
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
help
|
||
|
|
exit 1
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
else
|
||
|
|
echo "Log file for $program_name does not exist."
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
# Extract log function
|
||
|
|
function level_log() {
|
||
|
|
local cmd=$1
|
||
|
|
local program_name=$2
|
||
|
|
local level=$3
|
||
|
|
log_file="${LOG_DIR}/$program_name/$program_name.log"
|
||
|
|
lv_file="/tmp/prlog/level/$program_name"
|
||
|
|
#
|
||
|
|
if [[ "${BASH_VERSINFO:-0}" -lt 4 ]]; then
|
||
|
|
echo "此脚本需要 Bash 4.0 或更高版本" >&2
|
||
|
|
# exit 1
|
||
|
|
fi
|
||
|
|
# 声明一个关联数组
|
||
|
|
declare -A my_array
|
||
|
|
# 给数组赋值
|
||
|
|
my_array[0]="Off"
|
||
|
|
my_array[1]="Critical"
|
||
|
|
my_array[2]="Error"
|
||
|
|
my_array[3]="Warn"
|
||
|
|
my_array[4]="Info"
|
||
|
|
my_array[5]="Debug"
|
||
|
|
my_array[6]="Trace"
|
||
|
|
|
||
|
|
if [ -f "$log_file" ]; then
|
||
|
|
case "$cmd" in
|
||
|
|
Get)
|
||
|
|
level="`cat ${lv_file}`" #| grep -E "\[T|Trace\]"
|
||
|
|
strLv=${my_array[${level}]}
|
||
|
|
echo "get level ${level}: [${strLv:0:1}] [${strLv}]"
|
||
|
|
;;
|
||
|
|
Set)
|
||
|
|
echo "${level}" > "$lv_file"
|
||
|
|
strLv=${my_array[${level}]}
|
||
|
|
echo "set to level ${level}: [${strLv:0:1}] [${strLv}]"
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
help
|
||
|
|
exit 1
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
else
|
||
|
|
echo "Log file for $program_name does not exist."
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
# Check if correct number of arguments is passed
|
||
|
|
if [ "$#" -lt 1 ]; then
|
||
|
|
help
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Parse options and arguments
|
||
|
|
program_name=$1
|
||
|
|
option=$2
|
||
|
|
level=$3
|
||
|
|
|
||
|
|
# swap $1 $2
|
||
|
|
if [[ "$1" = -* ]];then
|
||
|
|
option=$1
|
||
|
|
program_name=$2
|
||
|
|
fi
|
||
|
|
|
||
|
|
#echo "1: [$1] 2: [$2] 3: [$3] "
|
||
|
|
#echo "option = ${option}"
|
||
|
|
#echo "program_name = $program_name"
|
||
|
|
#echo "level = $level"
|
||
|
|
|
||
|
|
|
||
|
|
if [[ ${option} =~ ^-s[0-9]$ ]]; then
|
||
|
|
level=${option#-s}
|
||
|
|
option="-s"
|
||
|
|
fi
|
||
|
|
# 动态等级
|
||
|
|
log_setlv=/tmp/prlog/level/${program_name}
|
||
|
|
|
||
|
|
case "$option" in
|
||
|
|
-v|--verbose)
|
||
|
|
echo 6 > ${log_setlv}
|
||
|
|
extract_log "V" "$program_name"
|
||
|
|
;;
|
||
|
|
-t|--trace)
|
||
|
|
echo 6 > ${log_setlv}
|
||
|
|
extract_log "V" "$program_name"
|
||
|
|
;;
|
||
|
|
-d|--debug)
|
||
|
|
echo 5 > ${log_setlv}
|
||
|
|
extract_log "D" "$program_name"
|
||
|
|
;;
|
||
|
|
-i|--info)
|
||
|
|
echo 4 > ${log_setlv}
|
||
|
|
extract_log "I" "$program_name"
|
||
|
|
;;
|
||
|
|
-w|--warn)
|
||
|
|
echo 3 > ${log_setlv}
|
||
|
|
extract_log "W" "$program_name"
|
||
|
|
;;
|
||
|
|
-err|--err)
|
||
|
|
echo 2 > ${log_setlv}
|
||
|
|
extract_log "err" "$program_name"
|
||
|
|
;;
|
||
|
|
-e*|--error)
|
||
|
|
echo 2 > ${log_setlv}
|
||
|
|
extract_log "E" "$program_name"
|
||
|
|
;;
|
||
|
|
-c|--critical)
|
||
|
|
echo 1 > ${log_setlv}
|
||
|
|
extract_log "C" "$program_name"
|
||
|
|
;;
|
||
|
|
-f|--fault)
|
||
|
|
echo 1 > ${log_setlv}
|
||
|
|
extract_log "C" "$program_name"
|
||
|
|
;;
|
||
|
|
-clear|--clear)
|
||
|
|
clear_log "$program_name"
|
||
|
|
;;
|
||
|
|
-g*|--get)
|
||
|
|
level_log "Get" "$program_name" "${level}"
|
||
|
|
;;
|
||
|
|
-s|-set|--set)
|
||
|
|
level_log "Set" "$program_name" "${level}"
|
||
|
|
;;
|
||
|
|
*)
|
||
|
|
echo "[$@]"
|
||
|
|
if [ -z "$option" ];then
|
||
|
|
extract_log "V" "$program_name"
|
||
|
|
fi
|
||
|
|
help
|
||
|
|
exit 1
|
||
|
|
;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
|