shell腳本打印日誌方法

作者:【吳業亮】雲計算開發工程師
博客:http://blog.csdn.net/wylfengyujiancheng

在shell腳本執行過程中如果沒有日誌記錄,特別是腳本比較長的情況下在執行完再定位問題很難發現問題原因,因此在腳本中增加日誌顯得十分重要。如何在日誌中記錄是哪個用戶什麼時間執行的哪個腳本,執行結果又是什麼呢?下面介紹日誌打印方法

example 1
調用log_info函數,如果希望只記錄相關信息,不對命令執行結果進行判斷
判斷/etc/passwd是否存在,如果存在就記錄一條日誌“/etc/passwd is exist.”

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函數,如果命令執行成功就回顯綠色信息,失敗回顯紅色信息。並在日誌中記錄成功或失敗信息。

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 !!!!”,並在日誌中記錄。
這裏寫圖片描述
記錄日誌函數代碼如下:

#!/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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章