标签:
从还没有毕业开始就开始写服务器上面的代码,不管是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比较方便。不过这种方式比较灵活,看自己的需求,原理实际上是一样的。
今天只是给大家看了脚本部分的转存和回滚,实际的日志输出在程序里面。
yate学习--./yate/tools/log_rotate.sh
标签:
原文地址:http://blog.csdn.net/u012377333/article/details/45199417