关注分享主机优惠活动
国内外VPS云服务器

07 linux完整的shell脚本调试工具

总结:一种常用的日志记录形式是编辑需要调试的脚本,并使用脚本中多行不同的输出作为调试的基础。 通常,使用这种格式调试短脚本,这很好。 这样就编写了脚本来调用并配置日志的日志级别和日志输出路径。 您需要优化该方法。

完整的shell脚本调试工具。 常用的日志记录格式采用OOP编程思想来设计日志记录功能,使得日志记录方法在前面打印日期和时间,例如log4j中。 如需分割日志,请添加日志输出开关。 调整级别并向文件添加颜色输出 为什么输出中没有颜色?请参见下图。 总结

当你运行shell脚本时,一些日志经常会打印到控制台。 根据输出日志,您可以确定脚本是否正常运行。

常用的日志输出格式

通过 Vim 编辑需要调试的脚本,使用 echo 在脚本的多行输出不同的内容,作为调试的依据。 R3L- srv temp]$ echo "这是一个测试日志"这是一个测试日志

用于调试,以 echo 的形式回显 使用通常是一个小问题。 但是,如果你的shell脚本有上千行、逻辑复杂,就很难满足你的要求。

使用OOP编程思想设计一个日志函数 [userwin@MiWiFi-R3L-srv temp]$ vim log.sh#!/bin/bashfunction log(){ echo "$@ "} [userwin @ MiWiFi -R3L-srv temp]$ vim debug.sh#!/bin/bashsource ./log.shlog "测试日志记录" log "今天是`日期 "+%Y-%m-%d"` " [userwin@MiWiFi-R3L-srv temp]$ sh debug .sh 测试日志函数今天是 2021-11-26。 使log方法输出像log4j一样在前面加上日期和时间。 [userwin@MiWiFi-R3L-srv temp]$ vim log.sh#!/bin/bashfunction log(){ echo "$(date "+%Y-%m-%d %H :%M:%S") $@"} [userwin@MiWiFi-R3L-srv temp]$ sh debug.sh 2021-11-26 00:04:53 测试日志功能2021-11-26 00:04:53 今天 2021-11-26 添加日志输出开关LOG_OPEN = 1是Log日志开关。

[userwin@MiWiFi-R3L-srv temp]$ cat log.sh #!/bin/bashLOG_OPEN=1function log(){[ $LOG_OPEN -eq 1 ] && echo "$(date "+%Y-%m-%d %H:%M:%S") $@"} 分割日志级别并添加颜色 [userwin@MiWiFi-R3L-srv temp]$ vim log.sh #!/bin/bash#log level debug-1, info-2 , warn- 3、错误- 4、总是-5LOG_LEVEL=3#调试日志函数 log_debug(){ content="[DEBUG] $(date "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 1 ] && echo -e "/033[32m" ${content} "/033[0m"}#信息记录功能 log_info(){ content="[INFO] $(日期 "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 2 ] && echo -e "/033[32m" ${content} "/033[0m"}#警告日志函数 log_warn(){ content="[WARN] $(date "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 3 ] && echo -e "/033[33m" ${ content} "/033[0m"}#错误日志函数 log_err(){ content="[ERROR] $(date "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 4 ] && echo -e "/033[31m" ${content} "/033[0m"}#始终输出Log函数log_always(){ content="[ALWAYS] $(日期 "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 5 ] && echo -e "/033[32m" ${content} "/033[0m]"}

调用

[userwin@MiWiFi-R3L-srv temp]$ vim test.sh #!/bin/bashsource ./log.shlog_debug "这是调试日志..." log_info "这是一个信息日志..." log_warn "这是一个警告日志..." log_err "这是一个错误日志..." log_always "这是一个始终日志..."

输出结果

[userwin@MiWiFi-R3L-srv temp]$ sh test.sh [WARN] 2021-11-28 23:05:23 这是警告日志... [错误] ] 2021- 11-28 23:05:23 这是错误日志...[始终] 2021-11-28 23:05:23 这始终是一个日志输出到文件 vim logFile.sh#!/bin/bash# 日志级别 debug-1, info-2, warn [ k4]3, 错误-4, 总是-5LOG_LEVEL=3#日志文件 LOG_FILE=./log.txt#调试日志函数 log_debug(){ content="[DEBUG] $(date "+%Y-%m-%d %H:%M:%S") $@ " [ $LOG_LEVEL -le 1 ] && echo $content >> $LOG_FILE && echo -e "/033[32m" ${content} "/033[0m"}#信息日志功能log_info(){ content="[INFO] $(date "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 2 ] && echo $content >> $LOG_FILE && echo -e "/033[32m" ${content} "/033[0m"}#警告日志函数 log_warn(){ content="[WARN] $(date "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 3 ] && echo $content > > $LOG_FILE && echo -e "/033[33m" ${content} "/033[0m"}#错误日志函数 log_err(){ content="[ERROR] $(date "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 4 ] && echo $content >> $LOG_FILE && echo [ k4]e "/033[31m" ${content} "/033[0m"}#始终输出日志 function log_always(){ content="[ALWAYS] $(date "+%Y-%m-%d %H:%M:%S") $@" [ $LOG_LEVEL -le 5 ] && echo $content >> $LOG_FILE && echo -e "/033[32m" ${content} "/033[0m"}

电话

[userwin@MiWiFi-R3L-srv temp]$ vim test.sh #!/bin/bashsource ./logFile.shlog_debug "这是一个调试日志..." log_info "这是一个信息日志..." log_warn "这是一个警告日志..." log_err "这是一个错误日志... "log_always "这始终是一个日志。"

输出:

[userwin@MiWiFi-R3L-srv temp]$ cat log.txt [警告] 2021-11-28 23:09:00 这是警告日志... [错误] 2021-11-28 23:09:00 这是错误日志... [ALWAYS] 2021[ k4]11-28 23:09:00 这始终是日志。 为什么输出中没有颜色?请参见下图。

如果将输出信息更改为以下内容,则颜色将出现在各处。 产量将会减少。

摘要

脚本需要改进。 目前我有几个想法: 1:创建log.cfg配置文件并放置以下设置:

p> #日志级别 debug-1, info-2, warn-3, error[ k4]4, always-5LOG_LEVEL=3#日志文件 LOG_FILE=./log.txt

修改logFile.sh。 如果 log.cfg 有值,则检索它。 如果没有值,请指定默认值。

2:在调用shell脚本中写入这两个设置,并将该变量导入到您的环境变量中。 如果 logFile.sh 无法检索系统变量,请提供默认值。 这样就编写了脚本来调用并配置日志的日志级别和日志输出路径。

3:logFile.sh的方法需要优化。 保存以上三个想法供以后使用。 ! !

未经允许不得转载:主机频道 » 07 linux完整的shell脚本调试工具

评论 抢沙发

评论前必须登录!