運維是很苦逼的。這篇博客是由於上次公司生產環境出了個小問題,三個人去打開catalina.out這個日誌。最後導致內存不足。查看一下三個項目的日誌文件都在2個G,說大也不大。說笑不小!於是就想到要按照天切割!
網上有好多方法去切割日誌,有一個比較坑的方法就是shell腳本,每天是能夠切割成日誌。可是操蛋玩意,每天的日誌都是空的!想找只狗都找不到!領導要求易上手,易配置。不寫定時任務的!所以我選擇了cronolog的這個工具!
一、安裝cronlog
下載地址: http://download.chinaunix.net/download.php?ResourceID=1851&id=3457
./configure
make && make install
默認安裝位置:
which cronolog
/usr/local/sbin/cronolog
二、配置分割tomcat日誌
1、要找到tomcat/bin/catalina.sh
找到一下:
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 &
類似這樣的行有2處,第一處是tomcat時帶“-security”參數的啓動,第二處是默認tomcat啓動方式,也就是else下面的那部分,我們只修改這裏。
另外還要把touch “$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 2>&1 | /usr/local/sbin/cronolog /usr/local/tomcat/logs/catalina.%Y%m%d.out >> /dev/null &
# >> "$CATALINA_OUT" 2>&1 &
fi
保存退出
重啓Tomcat服務
補充:個人做法 找到tomcat/conf/logging.properties
編輯
#1catalina.org.apache.juli.AsyncFileHandler.level = FINE
#1catalina.org.apache.juli.AsyncFileHandler.directory = ${catalina.base}/logs
#1catalina.org.apache.juli.AsyncFileHandler.prefix = catalina.
mv logging.properties logging.properties_bak
這樣重啓服務日誌文件夾裏就存了一種切割後的日誌形式
-rw-r--r-- 1 root root 37507 5月 12 13:27 catalina.20160512.out
以後會每天生成這樣一個catalina.date.out的文件。。。。。
三、總結
問題1、
在修改 org.apache.catalina.startup.Bootstrap此處時,與上一行有了一個空行。就報沒有找打這個命令的錯誤!
解決辦法:當然是要去掉那個空行了啊.
問題2
在修改上個命令時,一定要確定那是一行。。。。自己意會去吧!
from http://9907516.blog.51cto.com/9897516/1772638