转自:http://www.hackervip.com/Article/HTML/4935.html
使用cronolog可以格式化日志文件的格式,比如按时间分割,易于管理和分析。
cronolog的安装配置非常简单,简要说明如下:
1.下载软件
http://cronolog.org/download/index.html
2.解压缩
gzip -d cronolog-1.6.2.tar.gz
tar xf cronolog-1.6.2.tar
2.进入相应的目录./configure
3.make
4.make install
5.修改apache配置文件
以下是我的安装日志,供大家参考:
[root@eygle opt]# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz --08:05:12-- http://cronolog.org/download/cronolog-1.6.2.tar.gz => `cronolog-1.6.2.tar.gz' Resolving cronolog.org... done. Connecting to cronolog.org[217.160.212.212]:80... connected. HTTP request sent, awaiting response... 200 OK Length: 133,591 [application/x-gzip] 100%[==================================>] 133,591 26.23K/s ETA 00:00 08:05:19 (26.23 KB/s) - `cronolog-1.6.2.tar.gz' saved [133591/133591] [root@eygle opt]# gzip -d cronolog-1.6.2.tar.gz [root@eygle opt]# tar xf cronolog-1.6.2.tar [root@eygle opt]# cd cronolog-1.6.2 [root@eygle cronolog-1.6.2]# ls aclocal.m4 config.cache configure cronolog.spec install-sh Makefile.am mkinstalldirs src AUTHORS config.log configure.in doc lib Makefile.in NEWS testsuite ChangeLog config.status COPYING INSTALL Makefile missing README TODO [root@eygle cronolog-1.6.2]# ./configure loading cache ./config.cache checking for a BSD compatible install... (cached) /usr/bin/install -c checking whether build environment is sane... yes checking whether make sets ${MAKE}... (cached) yes checking for working aclocal... found checking for working autoconf... found checking for working automake... found checking for working autoheader... found checking for working makeinfo... found checking for gcc... (cached) gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... (cached) yes checking whether gcc accepts -g... (cached) yes checking for a BSD compatible install... /usr/bin/install -c checking whether ln -s works... (cached) yes checking for ranlib... (cached) ranlib checking for perl... (cached) /usr/bin/perl checking how to run the C preprocessor... (cached) gcc -E checking for ANSI C header files... (cached) yes checking whether stat file-mode macros are broken... (cached) no checking whether time.h and sys/time.h may both be included... (cached) yes checking whether struct tm is in sys/time.h or time.h... (cached) time.h checking for tm_zone in struct tm... (cached) yes checking for fcntl.h... (cached) yes checking for limits.h... (cached) yes checking for unistd.h... (cached) yes checking for working const... (cached) yes checking for size_t... (cached) yes checking whether struct tm is in sys/time.h or time.h... (cached) time.h checking for strftime... (cached) yes checking for vprintf... (cached) yes checking for mkdir... (cached) yes checking for mktime... (cached) yes checking for putenv... (cached) yes checking for strptime... (cached) yes checking for localtime_r... (cached) yes creating ./config.status creating Makefile creating lib/Makefile creating src/Makefile creating doc/Makefile creating testsuite/Makefile creating src/cronosplit [root@eygle cronolog-1.6.2]# make Making all in lib make[1]: Entering directory `/opt/cronolog-1.6.2/lib' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/opt/cronolog-1.6.2/lib' Making all in src make[1]: Entering directory `/opt/cronolog-1.6.2/src' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/opt/cronolog-1.6.2/src' Making all in doc make[1]: Entering directory `/opt/cronolog-1.6.2/doc' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/opt/cronolog-1.6.2/doc' Making all in testsuite make[1]: Entering directory `/opt/cronolog-1.6.2/testsuite' make[1]: Nothing to be done for `all'. make[1]: Leaving directory `/opt/cronolog-1.6.2/testsuite' make[1]: Entering directory `/opt/cronolog-1.6.2' make[1]: Nothing to be done for `all-am'. make[1]: Leaving directory `/opt/cronolog-1.6.2' [root@eygle cronolog-1.6.2]# make install Making install in lib make[1]: Entering directory `/opt/cronolog-1.6.2/lib' make[2]: Entering directory `/opt/cronolog-1.6.2/lib' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/opt/cronolog-1.6.2/lib' make[1]: Leaving directory `/opt/cronolog-1.6.2/lib' Making install in src make[1]: Entering directory `/opt/cronolog-1.6.2/src' make[2]: Entering directory `/opt/cronolog-1.6.2/src' /bin/sh ../mkinstalldirs /usr/local/sbin /usr/bin/install -c cronolog /usr/local/sbin/cronolog /bin/sh ../mkinstalldirs /usr/local/sbin /usr/bin/install -c cronosplit /usr/local/sbin/cronosplit make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/opt/cronolog-1.6.2/src' make[1]: Leaving directory `/opt/cronolog-1.6.2/src' Making install in doc make[1]: Entering directory `/opt/cronolog-1.6.2/doc' make[2]: Entering directory `/opt/cronolog-1.6.2/doc' make[2]: Nothing to be done for `install-exec-am'. /bin/sh ../mkinstalldirs /usr/local/info /usr/bin/install -c -m 644 ./cronolog.info /usr/local/info/cronolog.info install-info --info-dir=/usr/local/info /usr/local/info/cronolog.info make install-man1 make[3]: Entering directory `/opt/cronolog-1.6.2/doc' /bin/sh ../mkinstalldirs /usr/local/man/man1 /usr/bin/install -c -m 644 ./cronolog.1m /usr/local/man/man1/cronolog.1m /usr/bin/install -c -m 644 ./cronosplit.1m /usr/local/man/man1/cronosplit.1m make[3]: Leaving directory `/opt/cronolog-1.6.2/doc' make[2]: Leaving directory `/opt/cronolog-1.6.2/doc' make[1]: Leaving directory `/opt/cronolog-1.6.2/doc' Making install in testsuite make[1]: Entering directory `/opt/cronolog-1.6.2/testsuite' make[2]: Entering directory `/opt/cronolog-1.6.2/testsuite' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/opt/cronolog-1.6.2/testsuite' make[1]: Leaving directory `/opt/cronolog-1.6.2/testsuite' make[1]: Entering directory `/opt/cronolog-1.6.2' make[2]: Entering directory `/opt/cronolog-1.6.2' make[2]: Nothing to be done for `install-exec-am'. make[2]: Nothing to be done for `install-data-am'. make[2]: Leaving directory `/opt/cronolog-1.6.2' make[1]: Leaving directory `/opt/cronolog-1.6.2' [root@eygle cronolog-1.6.2]# which cronolog /usr/local/sbin/cronolog
安装完成以后需要对apache进行适当配置,修改httpd.conf文件,主要注意以下几点:
1.自定义日志格式
CustomLog "|/usr/local/sbin/cronolog /opt/apache/logs/access_log.%Y%m%d" combined
2.如果存在多个虚拟站点
可以考虑在VirtualHost进行相应设置ServerAdmin [email protected] DocumentRoot /www/docs/dummy-host.example.com ServerName dummy-host.example.com ErrorLog logs/dummy-host.example.com-error_log CustomLog logs/dummy-host.example.com-access_log common
[root@eygle logs]# ls -l access_log.20041226 -rw-r--r-- 1 root root 110425 Dec 26 09:10 access_log.20041226