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...
  • HzlSimple
  • HzlSimple
  • 2016年04月09日 10:24
  • 4584

linux下nohup日志切割方案

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

Linux日志文件分割(Logrotate)

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

linux下切分tomcat的Catalina.out日志

  • 2017年03月09日 15:26
  • 223KB
  • 下载

Linux切割命令split ,可以切割日志文件,文本文件

文件切割,很有用
  • longxibendi
  • longxibendi
  • 2011年05月06日 14:22
  • 11631

linux查看日志命令&切割过滤日志

基础 cd /home/itweb/apache-tomcat-7.0.59_**/logs 到指定的logs目录下 查看日志 tail -200f catalina.out 查看最新的200行...
  • u010343544
  • u010343544
  • 2016年12月08日 17:35
  • 1310

Linux 定时切割日志任务

系统定时任务配置文件: SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 1 0 * * * /home/f...
  • u010363836
  • u010363836
  • 2015年08月28日 18:47
  • 1337

Linux 日志切割工具cronolog详解

一、前言 二、cronolog 简介 三、cronolog 特点 四、cronolog 安装 五、cronolog 使用 六、cronolog 总结 注,操作系统 CentOS 6.4 x86_64...
  • okkeqin
  • okkeqin
  • 2016年09月26日 15:43
  • 2653

linux文件分割(将大的日志文件分割成小的)

linux下文件分割可以通过split命令来实现,可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。   在Linux下用split进行文件分割: ...
  • zhangjiarui130
  • zhangjiarui130
  • 2016年04月03日 10:49
  • 289

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

在很多实际项目中,应用程序会持续写日志,如果程序代码中没有调用支持自动切分(如按filesize或date切割)的日志库,则日志文件会很快增长到G级别。单机操作大文件对后续跟进日志来说非常不方便。 ...
  • slvher
  • slvher
  • 2015年03月11日 16:40
  • 3079
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:linux下日志切分
举报原因:
原因补充:

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