您的位置:首页 > 运维架构 > Shell

shell脚本打印日志

2018-03-05 16:31 267 查看
#!/bin/bash

LOG_FILE="/var/log/test.log"
>"${LOG_FILE}"
exec &>>${LOG_FILE}
set -x


第一行是定义日志绝对路径

第二行是先清空日志文件内容

第三行是把当前脚本的标准输出,标准错误输出都重定向到文件LOG_FILE中

第四行是打印每一行shell命令执行

exec是用被执行的命令行替换掉当前的shell进程,且exec命令后的其他命令将不再执行。例如在当前shell中执行exec ls表示执行ls这条命令来替换当前的shell即为执行完后会退出当前shell。但是当exec命令对文件描述符操作的时候,就不会替换shell,而是操作完成后还会继续执行后面的命令。例如第三行,在这里&>>LOG_FILE意思是把标准输出,标准错误输出都重定向到文件LOG_FILE中。

一般只需要在脚本前面加上这几行就可以了,日志内容就是脚本执行命令的全部过程和标准输出,标准错误输出内容。我们也可以自定义自己的打印函数:

#!/bin/bash

LOG_FILE="/var/log/test.log"
exec 2>>${LOG_FILE}

function my_log()
{
local curtime=`date "+%Y-%m-%d %H:%M:%S"`
echo "$curtime $*">> ${LOG_FILE}
}

main()
{
my_log "hello world"
}

main "$@"


可以看到我们开始先把标准错误输出都重定向到文件LOG_FILE中,我们自定义的打印函数前面会带上当前时间戳。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: