首页  »   编程

yate学习-/yate/tools/log_rotate.sh

网友分享于:2015-08-26  浏览:0次
yate学习--./yate/tools/log_rotate.sh

    从还没有毕业开始就开始写服务器上面的代码,不管是C/S还是B/S都基本接触过和实现过了,从最开始的socket通信,到移植boa,实现cgi,摸索voip server,web server(php--phalcon),维护过web server(java-ssh)。接触yate server的时间是最久的,也是第一次对一个系统有比较全的认识。日志-后台运行-运行脚本-服务安装-打包部署安装-性能测试。

    今天看到了里面的日志部分,实现的机制和方法比我之前使用的都好一些,把个人的理解贴出来,从而加深自己对日志的认识吧。

    下面的代码就是./yate/tools/log_rotate.sh的内容

# Assumes Yate writes to /var/log/yate and /var/log/yate-cdr.tsv

# You can place this script in /etc/cron.hourly and not use the system logrotate
# NOTE: Files are never deleted! Periodic cleanup is required

base="/var/log"
old="$base/yate-old"
ym=`date '+%Y-%m'`
d=`date '+%d'`
h=`date '+%H'`

mkdir -p "$old/$ym/$d"
mv "$base/yate" "$old/$ym/yate-$d-$h.log"
mv "$base/yate-cdr.tsv" "$old/$ym/$d/yate-cdr-$h.tsv"

/bin/kill -HUP `/bin/cat /var/run/yate.pid`
    先说说我的理解:

确保yate把日志写入/var/log/yate和/var/log/yate-cdr.tsv(我没有使用yate-cdr.tsv)

你可以将这个脚本放在/etc/cron.hourly文件夹(是linux下面一个每小时都会执行一次的计划)里面,并且不用使用系统的logrotate(linux系统的一个日志工具)

日志文件永远不会被删除,只会定期的清理

脚本的含义大致是这样的,(每小时都会执行的)

base="/var/log"
old="$base/yate-old"
定义了存放老日志文件的目录/var/log/yate-old

ym=`date '+%Y-%m'`
d=`date '+%d'`
h=`date '+%H'`
获取时间的年月、日、小时。如“2015-04”、“22”、“19”

mkdir -p "$old/$ym/$d"
递归创建存放老日志文件的目录

mv "$base/yate" "$old/$ym/yate-$d-$h.log"
mv "$base/yate-cdr.tsv" "$old/$ym/$d/yate-cdr-$h.tsv"

将日志文件该成老日志文件名字(/var/log/yate-old/2015-04/yate-22-19.log)

/bin/kill -HUP `/bin/cat /var/run/yate.pid`
重新运行yate(/var/run/yate.pid文件存放的是yate进程的进程号)


对比linux的日志工具logrotate的效果,肯定是要先了解这个工具的。

如果不记得了这个工具的基本用法。

这里贴一个转载的博客文章,大家可以看看

http://hao360.blog.51cto.com/5820068/1344732


认为还是采用日志工具logrotate比较方便。不过这种方式比较灵活,看自己的需求,原理实际上是一样的。


今天只是给大家看了脚本部分的转存和回滚,实际的日志输出在程序里面。

相关解决方案

最新解决方案