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

shell脚本打印日志方法

2015-11-24 22:02 696 查看
作者:【吴业亮】云计算开发工程师

博客:http://blog.csdn.net/wylfengyujiancheng

在shell脚本执行过程中如果没有日志记录,特别是脚本比较长的情况下在执行完再定位问题很难发现问题原因,因此在脚本中增加日志显得十分重要。如何在日志中记录是哪个用户什么时间执行的哪个脚本,执行结果又是什么呢?下面介绍日志打印方法

example 1

调用log_info函数,如果希望只记录相关信息,不对命令执行结果进行判断

判断/etc/passwd是否存在,如果存在就记录一条日志“/etc/passwd is exist.”

[code]
if [ -f  /etc/passwd  ]
then 
    echo -e "\033[32m /etc/passwd is exit \033[0m"
    log_info "/etc/passwd is exist."    
fi


example 2

调用fn_log函数,如果命令执行成功就回显绿色信息,失败回显红色信息。并在日志中记录成功或失败信息。

[code]rm -f /tmp/messages &&  cp -a /var/log/messages  /tmp
fn_log "rm -rf /tmp/message &&  cp -a /var/log/message  /tmp"

ping -c 3 10.10.10.10 
fn_log "ping -c 3 10.10.10.10 "




example 3

如果脚本在执行过程中用户按了CTR+C 终止脚本执行,回显“DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!!”,并在日志中记录。




记录日志函数代码如下:

[code]#!/bin/bash
#log path is /var/log/openstack-kilo
#if commod execute sucessed,it will return 0 else return 1
# Copyright 2014 Intel Corporation, All Rights Reserved.
function log_info ()
{
if [  -d /var/log  ]
then
    mkdir -p /var/log 
fi

DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
USER_N=`whoami`
echo "${DATE_N} ${USER_N} execute $0 [INFO] $@" >>/var/log/openstack-kilo #执行成功日志打印路径

}

function log_error ()
{
DATE_N=`date "+%Y-%m-%d %H:%M:%S"`
USER_N=`whoami`
echo -e "\033[41;37m ${DATE_N} ${USER_N} execute $0 [ERROR] $@ \033[0m"  >>/var/log/openstack-kilo #执行失败日志打印路径

}

function fn_log ()  {
if [  $? -eq 0  ]
then
    log_info "$@ sucessed."
    echo -e "\033[32m $@ sucessed. \033[0m"
else
    log_error "$@ failed."
    echo -e "\033[41;37m $@ failed. \033[0m"
    exit 1
fi
}
trap 'fn_log "DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!! "'  2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: