Linux下shell脚本实现记录日志

Linux下shell脚本实现记录日志

  最近写了shell脚本,有个基于jacoco调用的从指定Tomcat中自动生成覆盖报告文件到指定的Nginx目录中的脚本,Tomcat下有多个项目,这个脚本是后台跑的,而且是开了定时任务跑的。想着记录一些日志,方便知道脚本的运行状态,也方便排查。

shell记录日志的代码
#!/bin/bash
#定义日志的根目录
logDir=/var/log/
echo $logDir
#日志路径和文件
logFileName="$logDir/log.out"  
#文件大小这里以行数来计算
fsize=2000000     

#log函数,接收两个参数:level 日志级别,content 日志内容
#level: INFO ,WARN,ERROR
#content: log info
function log(){
  #judge the params,it must 2 params;
   if [ 2 -gt $# ]
   then
     echo  "WARN parameter not correct in log function"
     return;
   fi
   #如果日志的根目录不存在,则应该先创建
   if [ ! -d $logDir ];then
      mkdir -p $logDir
   fi
   #判断日志文件是否存在,不存在则创建
   if [ ! -e "$logFileName" ];then
     touch $logFileName
   fi
   #日志时间
   local curtime
   curtime=`date +"%Y%m%d%H%M%S"`
   #判断日志的大小,然后如果对于指定的行数,则应该备份旧的日志文件,然后创建新的日志文件
   local cursize
   if [ ! -e "$logFileName" ];then
     echo "There is no log file!Not record log to file!"
     return
   fi
   # 计算现有的日志文件的行数
   cursize=`cat $logFileName | wc -c`
   if [ $fsize -lt $cursize ];then
     echo "backup old log file"
     # 备份文件名为:日期.log
     mv $logFileName $curtime".log"
     # 创建新的日志文件
     touch $logFileName
   fi  
   # 打印控制台日志和记录日志到文件
   echo "$curtime $*"
   echo "$curtime $*" | tee -a $logFileName
}

总结

  这个日志文件主要是记录我们在脚本中自己主动输出的日志,对于我们调用其他脚本的日志的错误和信息,该怎么写入到我们自定的日志文件中是个问题。例如:在我们的脚本中执行指定Tomcat的sh startup.sh,启动tomcat时startup.sh报的错,那该怎么打印到我们指定的日志文件了。如果有错误,欢迎大家指正。

你可能感兴趣的:(Linux,shell,记录日志,Linux)