广告
返回顶部
首页 > 资讯 > 精选 >shell脚本怎么实现分日志级别输出
  • 466
分享到

shell脚本怎么实现分日志级别输出

2023-06-09 16:06:22 466人浏览 独家记忆
摘要

这篇文章主要介绍shell脚本怎么实现分日志级别输出,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!shell脚本如何优雅的记录日志信息,下面让我们一步一步,让shell脚本的日志也变得高端起来,实现如下功能①设定日志

这篇文章主要介绍shell脚本怎么实现分日志级别输出,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

shell脚本如何优雅的记录日志信息,下面让我们一步一步,让shell脚本的日志也变得高端起来,实现如下功能

①设定日志级别,实现可以输出不同级别的日志信息,方便调试

②日志格式类似为:[日志级别] 时间 funcname:函数名 [lineno:行号] 日志信息

③不同级别,设定不同颜色

④让其变为函数库文件,重用代码

下面看看我用shell记录日志的进化之路

1.最简单的日志记录方式

对于刚入门的同学,记录日志一般用echo加重定向方式,这应该是最原始的方式了^_^

echo "log message" > file

2.简单函数封装,简化重复写重定向到日志文件

当你想记录的日志变多,你得重复的写echo “”>$logfile,这也是件挺麻烦的事情,于是我就写了个log函数,这样修改的时候也比较方便。

log() {  msg=$1  echo $msg > log.file}

3.实现日志的级别不同颜色输出

某天使用某脚本的时候,报错了确没发现,于是就想将报错信息用不同颜色字体,这样会稍微友好一点,请看下面函数

function log {  local text;local logtype  logfile=./log.txt  logtype=$1  text=$2  #其实可以再将日志的格式定义为一个字符串,这样就不用重复写`date +'%F %H:%M:%S'`\t$1\t$2\033[0m,又可以省好多代码。  case $logtype in     error)      echo -e "\033[31m`date +'%F %H:%M:%S'`\t$1\t$2\033[0m" | tee -a $logfile;;    info)      echo -e "\033[32m`date +'%F %H:%M:%S'`\t$1\t$2\033[0m" | tee -a $logfile;;    warn)      echo -e "\033[33m`date +'%F %H:%M:%S'`\t$1\t$2\033[0m" | tee -a $logfile;;  esac}

4.实现设定日志级别,输出不同级别以上的日志,方便调试

学了python的日志模块后,想着如何像Python那样,可以设定日志级别,比如设定debug,那么只有debug级别以上的日志会输出,而且日志的格式也支持定义,常见格式 如下:[日志级别] 时间 funcname:函数名 [lineno:行号] 日志信息

请看如下的log函数:大家可以将log函数放到一个单独文件,称为函数库文件,然后写脚本的时候,通过source或 . 命令引入,就想python的导入模块一样,重用log的代码

#!/bin/bash#可将log函数单独放一个文件,通过.命令引入,这样就可以共用了#. log.sh #设置日志级别loglevel=0 #debug:0; info:1; warn:2; error:3logfile=$0".log"function log {    local msg;local logtype    logtype=$1    msg=$2    datetime=`date +'%F %H:%M:%S'`    #使用内置变量$LINENO不行,不能显示调用那一行行号    #logfORMat="[${logtype}]\t${datetime}\tfuncname:${FUNCNAME[@]} [line:$LINENO]\t${msg}"    logformat="[${logtype}]\t${datetime}\tfuncname: ${FUNCNAME[@]/log/}\t[line:`caller 0 | awk '{print$1}'`]\t${msg}"    #funname格式为log error main,如何取中间的error字段,去掉log好办,再去掉main,用echo awk? ${FUNCNAME[0]}不能满足多层函数嵌套    {      case $logtype in         debug)            [[ $loglevel -le 0 ]] && echo -e "\033[30m${logformat}\033[0m" ;;        info)            [[ $loglevel -le 1 ]] && echo -e "\033[32m${logformat}\033[0m" ;;        warn)            [[ $loglevel -le 2 ]] && echo -e "\033[33m${logformat}\033[0m" ;;        error)            [[ $loglevel -le 3 ]] && echo -e "\033[31m${logformat}\033[0m" ;;    esac    } | tee -a $logfile}#以下为测试debug () {    log debug "there are $# parameters:$@"}info() {    log info "funcname:${FUNCNAME[@]},lineno:$LINENO"}warn() {    log warn "funcname:${FUNCNAME[0]},lineno:$LINENO"}error() {    log error "the first para:$1;the second para:$2"}set -xdebug first secondset +xinfo first secondwarn first second error first second

输出如下:

shell脚本怎么实现分日志级别输出

在写这个函数的遇到一个问题就是不能用内建变量$LINENO来取得调用的行号,只能取得log函数中定义$LINENO那一行,搜了许久找到的解决办法是利用caller命令,关于caller命令的用法,如下:

5.caller的用法

caller命令放到函数中, 将会在stdout上打印出函数的调用者信息.,caller命令也可以在一个被source的脚本中返回调用者信息. 当然这个调用者就是source这个脚本的脚本. 就像函数一样, 这是一个”子例程调用”.你会发现这个命令在调试的时候特别有用.

 #!/bin/bash function1 () {  # 在 function1 () 内部.  caller 0  # 显示调用者信息. } function1  # 脚本的第9行. # 9 main test.sh # ^         函数调用者所在的行号. #  ^^^^      从脚本的"main"部分开始调用的. #    ^^^^^^^  调用脚本的名字. caller 0   # 没效果, 因为这个命令不在函数中.

以上是“shell脚本怎么实现分日志级别输出”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: shell脚本怎么实现分日志级别输出

本文链接: https://www.lsjlt.com/news/256790.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • shell脚本怎么实现分日志级别输出
    这篇文章主要介绍shell脚本怎么实现分日志级别输出,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!shell脚本如何优雅的记录日志信息,下面让我们一步一步,让shell脚本的日志也变得高端起来,实现如下功能①设定日志...
    99+
    2023-06-09
  • shell脚本实现分日志级别输出的方法
    shell脚本如何优雅的记录日志信息,下面让我们一步一步,让shell脚本的日志也变得高端起来,实现如下功能 ①设定日志级别,实现可以输出不同级别的日志信息,方便调试 ②日志格式类似为:[日志级别] 时间...
    99+
    2022-06-04
    脚本 级别 方法
  • shell脚本怎么输出日志到文件
    在shell脚本中,可以使用重定向操作符`>`将标准输出或标准错误输出到文件中。以下是将脚本中的日志输出到文件的几种常见方式:1. ...
    99+
    2023-09-14
    shell
  • shell脚本按当前日期输出日志的实现
    shell脚本基本技能是设置变量,输出信息。如下: sh脚本输出到控制台 将以上脚本保存到test.sh脚本文件中,并赋予可执行权限:sudo chmod +x test.sh 执行脚本:bash test.sh 控制...
    99+
    2022-06-04
    shell当前日期输出日志 shell 输出日志 shell 日期日志
  • Linux中shell脚本输出日志的示例分析
    这篇文章给大家分享的是有关Linux中shell脚本输出日志的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1、日志方法简介:#日志名称log="./upgrade.log" ...
    99+
    2023-06-09
  • 使用shell脚本怎么按当前日期输出日志
    这期内容当中小编将会给大家带来有关使用shell脚本怎么按当前日期输出日志,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。shell脚本基本技能是设置变量,输出信息。如下:sh脚本输出到控制台将以上脚本保存...
    99+
    2023-06-09
  • shell将脚本输出结果记录到日志文件的实现
    使用tee命令: sh portal/main.sh |tee log.txt 获取脚本父类路径 cmddir="`dirname $0`" 以上这篇shell将脚本输出结果记录到日志文件的实现就是小...
    99+
    2022-06-04
    脚本 文件 日志
  • 如何实现输出执行操作和打印日志的shell脚本
    这篇文章主要为大家展示了“如何实现输出执行操作和打印日志的shell脚本”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何实现输出执行操作和打印日志的shell脚本”这篇文章吧。cat ...
    99+
    2023-06-09
  • 输出执行操作和打印日志的shell脚本实例
    cat /mnt/log_function.sh #!/bin/bash #log function ####log_correct函数打印正确的输出到日志文件 function log_corr...
    99+
    2022-06-04
    脚本 实例 操作
  • shell脚本怎么实现的网站日志分析统计
    本篇内容主要讲解“shell脚本怎么实现的网站日志分析统计”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“shell脚本怎么实现的网站日志分析统计”吧!写了个shell脚本,可以用来统计每天的访问...
    99+
    2023-06-09
  • Shell脚本实现apache日志中的状态码分析
    一、首先将apache日志按天切割 vi /etc/httpd/conf/httpd.conf ErrorLog "|rotatelogs /var/log/httpd/%Y%m%der...
    99+
    2022-06-04
    脚本 状态 日志
  • 怎么用Shell脚本实现apache日志中的状态码
    本篇内容主要讲解“怎么用Shell脚本实现apache日志中的状态码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Shell脚本实现apache日志中的状态码”吧!一、首先将apache日...
    99+
    2023-06-09
  • Shell脚本实现分析apache日志中ip所在的地区
    查询ip地址所用的组件 wget http://rfyiamcool.googlecode.com/files/nali-0.1.tar.gz tar zxvf nali-0.1.tar.gz ...
    99+
    2022-06-04
    脚本 地区 日志
  • crontab脚本错误日志怎么正确的输出写入到文件
    这篇文章主要介绍“crontab脚本错误日志怎么正确的输出写入到文件”,在日常操作中,相信很多人在crontab脚本错误日志怎么正确的输出写入到文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”crontab...
    99+
    2023-07-05
  • 如何实现并分析Shell脚本apache日志中ip所在的地区
    这篇文章主要讲解了“如何实现并分析Shell脚本apache日志中ip所在的地区”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何实现并分析Shell脚本apache日志中ip所在的地区”吧...
    99+
    2023-06-09
  • 怎么用Shell+Linux命令实现日志分析
    本篇内容主要讲解“怎么用Shell+Linux命令实现日志分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Shell+Linux命令实现日志分析”吧!一、列出当天访问次数最多的IP命令:...
    99+
    2023-06-09
  • shell脚本怎么实现输入密码显示星号
    这篇文章将为大家详细讲解有关shell脚本怎么实现输入密码显示星号,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。示例如下:read -p "请输入使用者都名称:"&...
    99+
    2023-06-09
  • shell脚本实现的网站日志分析统计(可以统计9种数据)
    写了个shell脚本,可以用来统计每天的访问日志,并发送到电子邮箱,方便每天了解网站情况。脚本统计了:1、总访问量2、总带宽3、独立访客量4、访问IP统计5、访问url统计6、来源统计7、404统计8、搜索...
    99+
    2022-06-04
    种数 脚本 网站
  • 怎么用vbscript实现将脚本的输出复制到剪贴板
    本篇内容主要讲解“怎么用vbscript实现将脚本的输出复制到剪贴板”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用vbscript实现将脚本的输出复制到剪贴板”吧!代码如下:strCopy...
    99+
    2023-06-08
  • Shell脚本怎么实现根据文件的修改时间来分类文件
    这篇文章主要介绍“Shell脚本怎么实现根据文件的修改时间来分类文件”,在日常操作中,相信很多人在Shell脚本怎么实现根据文件的修改时间来分类文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Shell脚本...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作