linux下日志切分

原创 2016年08月30日 10:01:37

tomcat默认生成catalina.out文件,随着运行时间越来越长,文件也越来越大,所带来的坏处有:

1.查询日志困难

2.占存储空间大

3.难以删除旧日志

在此介绍一种方法,通过cronolog工具对其catalina.out进行分割。(若需要删除旧日志,写个定时任务进行删除即可。)

1. 下载cronolog
cronolog-1.6.2.tar.gz

2. 安装cronolog

# tar -zxvf cronolog-1.6.2.tar.gz
# cd cronolog-1.6.2
# ./configure
# make && make install

若执行“# ./configure”报错:

# ./configure
creating cache ./config.cache
checking for a BSD compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking whether make sets ${MAKE}... yes
checking for working aclocal... missing
checking for working autoconf... missing
checking for working automake... missing
checking for working autoheader... missing
checking for working makeinfo... missing
checking for gcc... no
checking for cc... no
configure: error: no acceptable cc found in $PATH
解决方法:
yum install gcc gcc-c++ gcc-g77 

3. 修改tomcat的catalina.sh文件

修改如下:

1)将:

if [ -z "$CATALINA_OUT" ] ; then
 CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out
fi
改为:
if [ -z "$CATALINA_OUT" ] ; then
 CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out
fi

2.注释 touch "$CATALINA_OUT",约370行

# touch "$CATALINA_OUT"
3.将:
 if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval "\"$_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
    eval "\"$_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
改为:
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval "\"$_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 2>&1 \
      | /usr/local/sbin/cronolog "$CATALINA_OUT" >> /dev/null & 

  else
    eval "\"$_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 "$CATALINA_OUT" >> /dev/null &

  fi


4.修改完catalina.sh的配置之后删掉logs底下的日志,重启tomcat即可

5.若使用替换的方式替换catalina.sh文件,权限不为tomcat,修改即可:

chown -R tomcat:tomcat ./catalina.sh

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

linux服务器自动切割并清理日志

需求由于nginx的日志会不停地增大,所以需要我们自己去切割日志,方便管理,需要达到以下的效果: 按日期自动切割日志,最小单位是天。 当日志总量超过一定量时,自动直接清理日志,限定总量不能超过1000...

对于大日志包进行分割的N种方法

对于大日志包进行分割的N种方法 (源自:杨志刚 博客 http://yangzhigang.cublog.cn) 前言:    网站一个主要域名的日志包,解压缩之后有10多个G,当日志分析系...

Linux日志文件分割(Logrotate)

一.概要说明 logrotate工具是为了方便进行日志管理而产生的一个工具,主要可以完成的工作包含:基于天、周、月、文件大小进行日志的滚动备份、压缩、删除甚至是发送邮件。 二.调用方式 ...

linux下nohup日志切割方案

最近在开发一后台服务程序,然后使用nohup java -jar $jarname > nohup.out 2>&1 &执行让程序后台运行,才几天日志就上G了,如果有问题想要查看日志,显然打开文件是一...

【Linux笔记】如何利用logrotate工具自动切分滚动中的日志文件

在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或date切割)的日志库,则日志文件会很快增长到G级别。单机操作大文件对后续跟进日志来说非常不方便。 ...
  • slvher
  • slvher
  • 2015年03月11日 16:40
  • 2753

linux下的日志处理

  • 2015年08月07日 08:49
  • 5KB
  • 下载

Linux下nginx日志自动切割

linux平台下nginx日志的自动切割

Linux下使用grep命令分析网站日志

  • 2015年10月10日 15:46
  • 347KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下日志切分
举报原因:
原因补充:

(最多只允许输入30个字)