zoukankan      html  css  js  c++  java
  • [转]shell脚本打印日志方法

    该文章转自:http://blog.csdn.net/wylfengyujiancheng/article/details/50019299

    ------------------------------------------------------------------------------------

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

    example 1
    调用log_info函数,如果希望只记录相关信息,不对命令执行结果进行判断
    判断/etc/passwd是否存在,如果存在就记录一条日志“/etc/passwd is exist.”

    
    if [ -f  /etc/passwd  ]
    then 
        echo -e "33[32m /etc/passwd is exit 33[0m"
        log_info "/etc/passwd is exist."    
    fi
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    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 "
    • 1
    • 2
    • 3
    • 4
    • 5

    这里写图片描述

    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 "33[41;37m ${DATE_N} ${USER_N} execute $0 [ERROR] $@ 33[0m"  >>/var/log/openstack-kilo #执行失败日志打印路径
    
    }
    
    function fn_log ()  {
    if [  $? -eq 0  ]
    then
        log_info "$@ sucessed."
        echo -e "33[32m $@ sucessed. 33[0m"
    else
        log_error "$@ failed."
        echo -e "33[41;37m $@ failed. 33[0m"
        exit 1
    fi
    }
    trap 'fn_log "DO NOT SEND CTR + C WHEN EXECUTE SCRIPT !!!! "'  2
  • 相关阅读:
    linux 读写文件 open write lseek的API和应用
    gdb 常用命令
    makefile
    c/c++ 动态库与静态库的制作和使用
    linux 常用命令
    c/c++ 网络编程 陈硕老师视频理解之ttcp
    emacs 高亮
    初识HMTL标签
    Java集合基于JDK1.8的ArrayList源码分析
    Java提高篇——equals()与hashCode()方法详解
  • 原文地址:https://www.cnblogs.com/horizonli/p/5995636.html
Copyright © 2011-2022 走看看