1. 程式人生 > >Linux shell指令碼輸出日誌筆記整理

Linux shell指令碼輸出日誌筆記整理

1.日誌方法簡介:

#日誌名稱
log="./upgrade.log"   #操作日誌存放路徑
fsize=2000000            #如果日誌大小超過上限,則儲存舊日誌,重新生成日誌檔案      
exec 2>>$log   #如果執行過程中有錯誤資訊均輸出到日誌檔案中

#日誌函式
#引數
    #引數一,級別,INFO ,WARN,ERROR
        #引數二,內容
#返回值
function zc_log()
{
    #判斷格式
    if [ 2 -gt $# ]
    then
        echo "parameter not right in zc_log function" ;
        return ;
    fi
    if [ -e "$log" ]
    then
        touch $log
    fi
   
    #當前時間
    local curtime;
    curtime=`date +"%Y%m%d%H%M%S"`
   
    #判斷檔案大小
    local cursize ;
    cursize=`cat $log | wc -c` ;

    if [ $fsize -lt $cursize ]
    then
        mv $log $curtime".out"
        touch $log ;
    fi   
    #寫入檔案
    echo "$curtime $*" >> $log;
}

2.使用舉例

shell指令碼內容:

#! /bin/bash

#資料庫變數

localpasswd=xxxx

mysqlhost=xxxx
mysqluser=xxxx
mysqlpasswd=xxxx

#日誌名稱
log="./upgrade.log"   #操作日誌存放路徑
fsize=2000000                  
exec 2>>$log   #如果執行過程中有錯誤資訊均輸出到日誌檔案中

#日誌函式
#引數
    #引數一,級別,INFO ,WARN,ERROR
        #引數二,內容
#返回值
function zc_log()
{
    #判斷格式
    if [ 2 -gt $# ]
    then
        echo "parameter not right in zc_log function" ;
        return ;
    fi
    if [ -e "$log" ]
    then
        touch $log
    fi
   
    #當前時間
    local curtime;
    curtime=`date +"%Y%m%d%H%M%S"`
   
    #判斷檔案大小
    local cursize ;
    cursize=`cat $log | wc -c` ;

    if [ $fsize -lt $cursize ]
    then
        mv $log $curtime".out"
        touch $log ;
    fi   
    #寫入檔案
    echo "$curtime $*" >> $log;
}


echo "start update shell" ;

mysql -h$sqlip -u$sqluser -p$sqlpasswd -e "use $db;
set names gbk;

--
-- 表的結構 msgm_qdjyly
--

DROP TABLE IF EXISTS msgm_qdjyly;
CREATE TABLE IF NOT EXISTS msgm_qdjyly (
  jylyid int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵id',
  jylb varchar(20) DEFAULT NULL COMMENT '交易類別',
  jylbmc varchar(50) DEFAULT NULL COMMENT '交易類別名稱',
  jgm varchar(10) NOT NULL COMMENT '機構碼',
  lyfs int(11) NOT NULL COMMENT '路由方式,1指定渠道,2按卡bin渠道',
  qdbh varchar(20) DEFAULT NULL COMMENT '渠道編號',
  qdmc varchar(50) DEFAULT NULL COMMENT '渠道名稱',
  zt int(11) NOT NULL DEFAULT '1' COMMENT '狀態,1正常,2關閉',
  bz varchar(100) DEFAULT NULL COMMENT '備註',
  PRIMARY KEY (jylyid)
) ENGINE=InnoDB  DEFAULT CHARSET=gbk COMMENT='交易路由資訊' AUTO_INCREMENT=7 ;
zc_log INFO "執行 CREATE TABLE  msgm_qdjyly 命令的結果為 : $? " ;
echo "執行 CREATE TABLE  msgm_qdjyly 命令的結果為 : $?  " ;