cronolog 是一款日志轮询(rotation)工具,可以用它来把Apache, Tomcat, Nginx等WEB服务器的输出日志切分按日或者按月保存。cronolog 从标准输入中读取日志内容,然后把他们写到按指定格式命名的日志文件中。当日期改变后, cronolog会把之前的日志文件关闭,再打开一个包含新日期的日志文件。利用cronolog可以完美的解决web服务器日志文件不断增大,且不能在运行时删除的问题。
cronolog特点:
cronolog 特点cronolog可以按月、日甚至按小时进行日志轮询,也可以配置每个日志文件的最大值,当文件大小达到这个最大值时,自动记录到下一个日志文件中。
cronolog稳定版本为 1.6.2,但此版本有一个弊端:当日志文件的大小到2G(2150726147字节)时,cronolog进程就变成僵尸进程,即日志无法再写入,cronolog 1.7 版本解决了这个问题。
下载
1
|
cronolog-1.7.0-beta.tar.gz
|
安装
1
2
3
4
5
|
# tar zxvf cronolog-1.7.0-beta.tar.gz
# cd cronolog-1.7.0
# ./configure --prefix=/usr/local/cronolog
# make
# make install
|
如果不指定--prefix路径,cronolog默认安装在/usr/local/sbin/cronolog
修改Apache虚拟主机配置
编辑httpd.conf文件,将其中的
1
|
[root@localhost~]#vim/etc/httpd/httpd.conf
|
将默认日志:
1
|
CustomLog "logs/access_log"combined
|
修改为:
1
|
CustomLog
"| /usr/local/sbin/cronolog /logs/www/access_%Y%m%d.log"
combined
|
其中%Y%m%d为日志文件分割方式,即为“年月日”。
关键点在于: 被轮询的日志一定要是绝对路径,不能是相对路径。
老男孩学习笔记:
修改Tomcat配置
修改tomcat的bin目录下的catalina.sh
1
|
# vim /usr/local/tomcat/bin/catalina.sh
|
找到如下代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
CATALINA_OUT=
"$CATALINA_BASE"
/logs/catalina
.out
touch
"$CATALINA_OUT"
if
[
"$1"
=
"-security"
] ;
then
if
[ $have_tty -
eq
1 ];
then
echo
"Using Security Manager"
fi
shift
"$_RUNJAVA"
"$LOGGING_CONFIG"
$LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.
dirs
=
"$JAVA_ENDORSED_DIRS"
-classpath
"$CLASSPATH"
\
-Djava.security.manager \
-Djava.security.policy==
"$CATALINA_BASE"
/conf/catalina
.policy \
-Dcatalina.base=
"$CATALINA_BASE"
\
-Dcatalina.home=
"$CATALINA_HOME"
\
-Djava.io.tmpdir=
"$CATALINA_TMPDIR"
\
org.apache.catalina.startup.Bootstrap
"$@"
start \
>>
"$CATALINA_OUT"
2>&1 &
else
"$_RUNJAVA"
"$LOGGING_CONFIG"
$LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.
dirs
=
"$JAVA_ENDORSED_DIRS"
-classpath
"$CLASSPATH"
\
-Dcatalina.base=
"$CATALINA_BASE"
\
-Dcatalina.home=
"$CATALINA_HOME"
\
-Djava.io.tmpdir=
"$CATALINA_TMPDIR"
\
org.apache.catalina.startup.Bootstrap
"$@"
start \
>>
"$CATALINA_OUT"
2>&1 &
fi
|
将上面CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out修改为:
1
|
CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
|
将最上面的touch “$CATALINA_OUT”注释掉如下
1
|
#touch "$CATALINA_OUT"
|
将下面两处
1
2
|
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 &
|
修改为
1
2
|
org.apache.catalina.startup.Bootstrap
"$@"
start 2>&1 \
|
/usr/local/sbin/cronolog
"$CATALINA_OUT"
>>
/dev/null
2>&1 &
|
或
1
2
|
org.apache.catalina.startup.Bootstrap
"$@"
start 2>&1 \
|
/usr/local/cronolog/sbin/cronolog
"$CATALINA_BASE"
/logs/catalina
.%Y-%m-%d.out >>
/dev/null
&
|
然后重启tomcat即可
本文转自ling118 51CTO博客,原文链接:http://blog.51cto.com/meiling/1976745,如需转载请自行联系原作者