gsl-statique-litterateur/var/lib/gsl/scripts/gsl__log_manager

184 lines
4.4 KiB
Plaintext
Raw Normal View History

#!/bin/bash
# file: gsl__log_manager
# Folder: /var/lib/gsl/scripts
2022-06-14 18:51:19 +02:00
# By echolib (XMPP: im@echolib.re)
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
2022-06-14 18:51:19 +02:00
#======================================================================
# Get arguments from COMMAND (log)
# $2: arguments list
#======================================================================
log__OPTIONS() {
while test "$2"
do
case "$2" in
clean|-C)
shift
if [[ "$2" == "all" ]];then
rm -f "$gsl_dir_logs/"*".gsl.log"
echo "! Clean all saved logs"
exit
fi
[[ -z `grep '[^[:space:]]' "$gsl_file_logs" 2>/dev/null` ]] \
&& echo "# No logs to show. File is empty." \
&& exit
gsl_date_logs=`date +%F-%H-%M-%S`
mv "$gsl_file_logs" "$gsl_dir_logs/$gsl_date_logs.gsl.log"
rm -f "$gsl_file_logs"
printf '%s %s %s\n' \
"# Logs saved to" \
"$gsl_dir_logs/$gsl_date_logs.gsl.log" \
"and cleaned"
exit
;;
*)
[[ -z `grep '[^[:space:]]' "$gsl_file_logs" 2>/dev/null` ]] \
&& echo "# No logs to show. File is empty." \
&& exit
case "$2" in
-s) gsl_logs_last_session=true ;;
-e) gsl_logs_err=true ;;
-i) gsl_logs_inf=true ;;
-w) gsl_logs_war=true ;;
*) gsl_logs_search="$2" ;;
esac
;;
esac
shift
done
gsl__logs_show
exit
}
#======================================================================
# Print in log starting process
# $1; process
#======================================================================
log__process_begin() {
gsl__logs_print -i -B -P \
"$1" \
"$PWD"
}
#======================================================================
# Print in log ending process
# $1; oricess
#======================================================================
log__process_end() {
gsl__logs_print -i -E -P \
"$1" \
"$PWD"
}
2022-04-11 18:45:33 +02:00
#----------------------------------------------------------------------
# Print in log file
2022-04-11 18:45:33 +02:00
#----------------------------------------------------------------------
gsl__logs_print() {
#1: Level
#2: Type
#3: Process
#4: Infos
#5: File
2022-06-14 18:51:19 +02:00
case "$1" in
-i) log_f1="$gsl_log_i";CL=${NC} ;;
-w) log_f1="$gsl_log_w";CL=${CY};gsl_checker_war=true ;;
-e) log_f1="$gsl_log_e";CL=${CR};gsl_checker_err=true ;;
*) log_f1="$1";;
esac
case "$2" in
-h) log_f2="Header" ;;
-c) log_f2="Content" ;;
-g) log_f2="GSL" ;;
-B) log_f2="Starting" ;;
-E) log_f2="Stopping" ;;
-A) log_f2="Article" ;;
-srv) log_f2="Server" ;;
-st) log_f2="Stats" ;;
-R) log_f2="Removed" ;;
-D) log_f2="Database" ;;
-sdb) log_f2="Sidebar" ;;
*) log_f2="$2" ;;
esac
case "$3" in
-c) log_f3="Created" ;;
-f) log_f3="file" ;;
-e) log_f3="Edit" ;;
-h) log_f3="Hash" ;;
-C) log_f3="Check" ;;
-M) log_f3="Make" ;;
-P) log_f3="Process" ;;
-wip) log_f3="wip" ;;
-www) log_f3="www" ;;
-src) log_f3="Source" ;;
-sk) log_f3="Skip" ;;
-inv) log_f3="Invalid" ;;
*) log_f3="$3" ;;
esac
printf '%b%s %s %-7s\t%-7s\t%-38s\t%s\t%s\t%s%b\n' \
"${CL}" \
2022-02-15 12:42:54 +01:00
"`date +%F' '%T`" \
2022-06-14 18:51:19 +02:00
"$log_f1" \
"$log_f2" \
"$log_f3" \
"$4" \
2022-06-14 18:51:19 +02:00
"$gsl_post" \
"$domain_name" \
"$5" \
2022-06-14 18:51:19 +02:00
"${NC}" \
>> "$gsl_file_logs"
}
#-----------------------------------------------------------------------
# Show logs from file with filters
#-----------------------------------------------------------------------
gsl__logs_show() {
# Choices are important, but let's give priority
[[ "$gsl_logs_inf" ]] \
&& gsl_logs_filter="$gsl_log_i"
[[ "$gsl_logs_war" ]] \
&& gsl_logs_filter="$gsl_log_w"
[[ "$gsl_logs_err" ]] \
&& gsl_logs_filter="$gsl_log_e"
# Last session show or not
if [[ "$gsl_logs_last_session" ]];then
gsl_log_start_line=`
grep -n "Starting" "$gsl_file_logs" \
| tail -1 \
| awk -F: '{print $1}'`
2022-06-14 18:51:19 +02:00
awk -v sl="$gsl_log_start_line" \
'NR >= sl' \
"$gsl_file_logs" \
| grep "$gsl_logs_filter" \
| grep -Ei "$gsl_logs_search" \
2022-06-14 18:51:19 +02:00
| column -t -s$'\t' -o' '
else
2022-06-14 18:51:19 +02:00
while read -r "gsl_log_content"
do
# Let's read clear sessions
[[ "$gsl_log_content" =~ "Starting" ]] \
&& echo
echo "$gsl_log_content"
done < <(cat "$gsl_file_logs" \
| grep "$gsl_logs_filter" \
| grep -Ei "$gsl_logs_search" \
| column -t -s$'\t' -o' ')
fi
}