使用bash脚本在linux / solaris中记录日志

时间:2014-10-31 11:23:04

标签: bash tomcat log4j solaris

我们的应用程序服务器(tomcat)创建了catalina.log,我们需要编写一个cron作业(bash脚本)来运行每小时并使用时间戳旋转日志文件。

目前我们正在以下列方式这样做。

  1. 将catalina.out复制到catalina.out。
  2. 清空catalina.out
  3. 我们遇到的问题是,如果在此过程中写入catalina.out的任何内容,在清空catalina.out期间就会丢失。 无论如何都要克服这个问题吗?

    提前致谢 Mayuran

1 个答案:

答案 0 :(得分:1)

虽然您应该使用logrotate命令来管理日志轮换,但该建议并不能直接回答您的问题。

我发现你遇到了两个问题。首先你说:

  
      
  1. 将catalina.out复制到catalina.out。
  2.   

这似乎不正确。也许这是一个错字?为什么要将文件复制到自身?

其次,你不应该复制这些(可能很大的)文件。您需要做的就是重命名它们。所以,一个穷人的日志轮换(再次,你应该使用logrotate)将是这样的:

FILE=catalina.out
TIME=`date -u +%s`
if [ -e $FILE ] ; then
  mv ${FILE} ${FILE}.${TIME} && touch ${FILE}
else
  touch ${FILE}
fi

这当然会最终用catalina.out。*文件填满你的磁盘。您需要增强脚本来处理它,或者只使用logrotate。