常用的日志输出形式是编辑要调试的脚本,在脚本的多行中输出不同的内容,作为调试的依据。通常长度较小的脚本都是用表单调试,这是个问题。通过这种方式,脚本将对谁调用、谁将配置日志的日志级别和日志输出路径进行编程。中的方法需要优化。
一个完整的shell脚本调试工具常见的日志输出形式,使用OOP编程思想设计log函数,使得log方法输出类似log4j,前面有日期和时间。添加一个开关来划分日志级别,并为文件添加颜色。为什么输出没有颜色?请参见下面的摘要。
在执行一个shell脚本时,经常会将一些日志打印到控制台,根据输出的日志可以判断脚本的功能。
常用的日志输出形式是通过Vim编辑要调试的脚本,使用echo输出脚本中多行不同的内容作为调试的依据。
[user win @ mi wifi -r3l -SRV temp]$ echo“这是一个测试日志”这是一个测试日志,通常是一个小的shell脚本,以echo的形式调试。是木头的问题。但如果shell脚本有几千行,逻辑复杂,就很难满足要求。
用OOP编程思想设计日志函数[user win @ mi wifi -r3l -SRV temp]$ vim log . sh #!/bin/bash function log(){ echo " $ @ " }[user win @ mi wifi -r3l -SRV temp]$ vim debug . sh #!/bin/bashsource。/log . shlog " test log function " log " today is ` date "+% Y-% M-% d " ` "[user win @ mi wifi -r3l -SRV temp]$ shdebug . sh test log function today is 2021-11-26 Let log方法输出类似log4j的日期和时间[user win @ mi wifi -r3l -SRV temp]$ vim log . sh #!/bin/bash function Log(){ echo " $(date "+% Y-% M-% d % H:% M:% S ")$ @ " }[user win @ mi wifi -r3l -SRV temp]$ sh debug . sh 2021-11-26 00: 04: 53测试日志函数2021-11-26 00:04:53今天是2021-11-26添加开关LOG_OPEN=1进行日志输出,其中
[user win @ mi wifi -r3l -SRV temp]$ cat log . sh #!/bin/bash log _ open = 1 function log(){[$ log _ open -eq1]& & echo " $(date "+% y-% M-% d % h:% m:% s ")$ @ " }划分日志级别并添加颜色[userwin @ miwifi -] /bin/bash#日志级别debug-1,info-2,warn-3,error-4, 始终s-5log _ level = 3 #调试日志函数log _ debug(){ content = "[debug]$(date "+% Y-% M-% d % h:% m:% s ")$ @ "[$ log _ level -le1]& & echo -03[32m " $ { content } "/033[0m " } #信息日志函数log _ info(){ content = "[info]$(date "+% Y-% M-% d % h:% m:% s))$ @ "[$ log _ level 03 $ @ "[$ Log _ 03[33m " $ { content } "/033[0m " } #错误日志函数Log _ err(){ content = "[error]$(date "+% Y-% M-% d % h:% m:% s ")$ @ "[$ Log _ level 03[31m " $ { content } "/033[0m " } #日志函数Log _ always(){ content = "[always]$(date "+% Y-% M-% d % h:% m:% s))$ @ "[
[user win @ mi wifi -r3l -SRV temp]$ vim test . sh #!/bin/bashsource。/log.shlog _ debug "这是调试日志..."log _ info "这是信息日志..."log _ warn "这是警告日志..."log _ err "这是错误日志..."log _ always“这总是日志...”输出结果
[user win @ mi wifi -r3l -SRV temp]$ sh test . sh[WARN]2021-11-28 23:05:23这是WARN日志...[错误] 2021-11-28 23: 05: 23这是错误日志...[总是] 2021-11-28 23: 05: 23这总是日志...输出到文件vim logFile.sh#!/bin/bash#日志级别debug-1,info-2,warn-3,error-4,Always S-5log _ level = 3 #日志文件LOG_FILE=。/log.txt#调试日志函数log _ debug(){ content = "[debug]$(date "+% Y-% M-% d % h:% m:% s ")$ @ "[$ Echo $ content > > $ log _ file & & Echo -e "/033[32m " $ { content } "/033[0m " } #信息日志函数log _ info(){ content = "[info]$(date "+% Y-% M-% d %)。$ @ "[$ LOG _ LEVEL -le2]& & echo $ content > > $ LOG _ FILE & & echo -e "/033[32m " $ { content } "/033[0m " } #警告日志函数LOG _ warn(){ content = "[warn]$(date "+% Y-% M-% d % H:% M:% S ")$ @ "[$ LOG _ LEVEL -le3]& & echo $ content > >$ LOG _ FILE & $ echo -e "/033[33m " $ { content } "/033 Echo $ content > > $ Log _ file & $ Echo 4 03[31m " $ { content } "/033[0m " } # Log函数Log _ always(){ content = "[always]$(date "+% Y-% M-% d % h:% m:% s ")$ @ "[Echo $ content > > $ Log _ file & $ Echo -e "/033[32m " $ { content } "/033[0m " } call
[user win @ mi wifi -r3l -SRV temp]$ vim test . sh #!/bin/bashsource。/logfile.shlog _ debug "这是调试日志..."log _ info "这是信息日志..."log _ warn "这是警告日志..."log _ err "这是错误日志..."log _ always“这总是日志...”输出结果:
[user win @ mi wifi -r3l -SRV temp]$ cat log . txt[WARN]2021-11-28 23:09:00这是WARN日志...[错误] 2021-11-28 23: 09: 00这是错误日志...[总是] 2021-11-28 23: 09: 00这总是日志...为什么输出没有颜色?见下图修改输出信息如下,到处都是颜色,输出有记录。
剧本的总结还有待完善。目前有以下几种思路:1 .创建log.cfg配置文件,并放置以下配置
#日志级别debug -1,info -2,warn -3,error -4,always -5 log _ level = 3 #日志文件LOG_FILE=。/log.txt修改logFile.sh如果log.cfg中有值,取其值;没有值,给一个默认值。
2:在调用shell脚本中编写这两个配置,并将这个数量变量导入到环境变量中。如果logFile.sh没有获得系统变量,它将给出一个默认值。通过这种方式,脚本将对谁调用、谁将配置日志的日志级别和日志输出路径进行编程。
3:log file . sh中的方法需要优化。以上三个想法留着以后补充吧!!!
评论前必须登录!
注册