Linux下使用cronolog切割服务器日志文件的方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下使用cronolog切割服务器日志文件的方法相关的知识,希望对你有一定的参考价值。

参考技术A

  Linux下运行的Web服务器Apache,默认日志文件是不分割的,一个整文件既不易于管理,也不易于分析统计。安装cronolog后,可以将日志文件按时间分割,易于管理和分析。

  cronolog安装配置非常简单,下载后只需要输入几个命令即可完成。

   1、下载(最新版本)

  # wget http://cronolog.org/download/cronolog-1.6.2.tar.gz

   2、解压缩

  # tar zxvf cronolog-1.6.2.tar.gz

   3、进入cronolog安装文件所在目录

  # cd cronolog-1.6.2

   4、运行安装

  # ./configure

  # make

  # make install

   5、查看cronolog安装后所在目录(验证安装是否成功)

  # which cronolog

  一般情况下显示为:/usr/local/sbin/cronolog

  整个安装过程结束,下面需要把日志的格式配置一下:

   1、虚拟主机配置文件 httpd-vhosts.conf

  将Web日志设置 CustomLog 修改为以下格式

  CustomLog "|/usr/local/sbin/cronolog /www/logs/example_%Y%m%d.log" combined

  当然,错误日志设置 ErrorLog 也可以利用 cronolog 分割,设置为

  ErrorLog "|/usr/local/sbin/cronolog /www/logs/error_%Y%m%d.log"

   2、如果服务器上只有一个站点(当然这种情况比较少),直接按上面所说格式修改 httpd.conf 文件日志设置部分。

  说明:

  绿色部分 为 cronolog 安装后所在位置,系统版本不同可能位置不完全一样,以 which 命令查看到的位置为准;

  蓝色部分 为设置的日志文件所在位置,根据需要修改;

  红色部分 为设置的日志文件标识性字符,根据需要修改;

  %Y%m%d 为日志文件分割方式,例子中为“年月日”,也可以修改成自己需要的。

  修改httpd.conf文件:

  这个文件在我的电脑上是在 /etc/httpd/conf/httpd.conf 不同的服务器 应该是不一样的

  在最后加上

  # ServerAdmin webmaster@dummy-host.example.com

  # DocumentRoot /www/docs/dummy-host.example.com

  # ServerName dummy-host.example.com

  ErrorLog /data/logs/apache/webapps.wps.cn-error_log

  CustomLog "|/usr/local/sbin/cronolog /data/logs/apache/%Y%m%d/access_log.%H" combined

  #这个保证了每天一个文件夹 文件夹下 每个小时产生一个log

  #CustomLog "|/usr/local/sbin/cronolog /data/logs/apache/%Y%m%%Hdaccess_log" combined

  进入到 /etc/init.d/httpd configtest 这样验证你的配置文件是否正确

  进入到 /etc/init.d/httpd restart 重启apache 服务器(不同的\'系统应该是不一样 要自己找到)

  用于Tomcat

  第一步

  将

  if [ -z "$CATALINA_OUT" ] ; then

  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

  fi

  修改为

  if [ -z "$CATALINA_OUT" ] ; then

  CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out.%Y-%m-%d

  fi

  第二步

  将

  touch "$CATALINA_OUT"

  改为

  #touch "$CATALINA_OUT"

  第三步

  将

  org.apache.catalina.startup.Bootstrap "$@" start

  >> "$CATALINA_OUT" 2>&1 &

  修改为

  org.apache.catalina.startup.Bootstrap "$@" start 2>&1

  | /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null &

  重新启动 Tomcat

  service tomcat restart

  可以在 Tomcat 的 logs 目录底下找到以系统日期为结尾的 catalina.out.yyyy-mm-dd 的档案,这样子就成功了。

  后续就是持续观察看看是不是每天都有产生一个新的 catalina.out.yyyy-mm-dd 档案。然后再安排定期删除这些较旧的 log 档即可。

cronolog日志切割

1. 下载安装 cronolog,它的主页 http://cronolog.org . 下载的是源码,安装过程就是 ./configure, make, make install,最后一步可直接把 src/cronolog 执行文件拷入到某个适合的目录,如 /usr/local/sbin/ 目录

2. 编辑 bin/catalina.sh 文件

    1)找到下面行并把它用 # 注释掉

touch "$CATALINA_BASE"/logs/catalina.out

    在新 Tomcat7 的 bin/catalina.sh 文件要注释的行是

touch "$CATALINA_OUT"

    2)替换下面的行(有两处,不过一般在 -security 中的那一行不需要去关注,不妨两处全替换了)

>> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
 

    为

2>&1 |/usr/local/sbin/cronolog "$CATALINA_BASE/logs/catalina-%Y-%m-%d.out" &

在 Tomcat7 的 bin/catalina.sh 中是需要替换行是

>> "$CATALINA_OUT" 2>&1 "&"

替换后该行的内容与上面是一样的。

为什么 Tomcat7 后会有所不同,因为在它的 catalina.sh 文件中有如下定义

CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out

3. 保存 catalina.sh 文件,重启 Tomcat 即可。

以后看到 $TOMCAT_HOME/logs/ 下的就是 catalina-2012-09-16.out, catalina-2012-09-17.out ...... 一系列文件,好像 cronolog 又没提供方式来控制归档的日志文件个数。

以上是关于Linux下使用cronolog切割服务器日志文件的方法的主要内容,如果未能解决你的问题,请参考以下文章

linux 下 使用cronolog对Tomcat 输出catalina.out 日志按照自定义日期格式进行切割 亲测可用

Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录

日志切割工具cronolog yum安装和源码安装和基本使用

使用cronolog实现tomcat日志切割

cronolog日志切割

tomcat 日志切割