Tomcat7 日志配切割置

   收集日志的作用

  监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;
  跟踪代码运行时轨迹,作为日后审计的依据;
  担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。

 

一、使用Cronolog切割Tomcat7 日志

 
Tomcat日志文件输出路径配置在catalina.sh文件中,变量名CATALINA_OUT
 

1.1 、cronolog下载安装

 
看Tomcat下面有很多catalina.日期的文件.log,原本以为每天的日志内容自动切割成每天独立的文件,但是打开查看,里面没有记录什么日志信息。catalina.日期.log  这个主要是记录tomcat启动时候的信息,类似于我们启动服务的时候在控制台看到的信息。在里面可以看到启动的JVM参数以及操作系统等日志信息。如果没有使用log4j等日志机制,系统的的错误信息与打印语句也在这个日志文件中记录。(linux下所有的日志都在catalina.out中)
 
linux下Tomcat所有的日志都在catalina.out中,那如果访问量大没有几天日志文件就12G了,文件太大导致文件无法打开,日志无法查看,日志文件就没有作用。
 
百度了一下有两种方案,一种是日志切割用的是cronlog,按天输出,一种是将Tomcat日志改为Log4J,控制日志输出内容。
 
 
日志切割用的工具官方网站:
点击:Cento7,在点击“cronlog-1.6.2-14.el7.x86.64.rpm"
 
 
进入子页面,拉到页面底部,点击"Binary Package",下载”cronolog-1.6.2-14.el7.x86_64.rpm",右键选择“复制下载地址”
 
然后进入Centos7,用root权限下载rpm包
 
运行安装 : rpm -ivh cronolog-1.6.2-14.el7.x86_64.rpm
 
查看安装位置 whereis cronolog
 
注意:这边安装完的位置是在/usr/sbin/目录下面

1.2、Tomcat7 配置cronolog

从Tomcat位置下面的bin/catalina.sh的421行开始修改(每个TOMCAT版本位置会不一样)
 
 
 
 
具体的代码

#touch "$CATALINA_OUT"
  if [ "$1" = "-security" ] ; then
    if [ $have_tty -eq 1 ]; then
      echo "Using Security Manager"
    fi
    shift
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
      -D$ENDORSED_PROP="\"$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/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &

  else
    eval $_NOHUP "\"$_RUNJAVA\"" "\"$LOGGING_CONFIG\"" $LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \
      -D$ENDORSED_PROP="\"$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/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &

  fi

然后在启动Tomcat的时候,每个catalina_.out文件都会独立出来。

 
----------------------------------------------------------------------------------------------------------------------------------
 
二、使用Log4J切割Tomcat 7日志
 
 

tomcat7日志管理的部分内容来自于Apache tomcat 7.0文档中logging部分, http://tomcat.apache.org/tomcat-7.0-doc/logging.html

一、简介

1 、为什么要用log4j

  在我们平时使用的tomcat7,日志输出到catalina.out。由于catalina.out日志无法自动切割,并且所有的日志都输出到catalina.out文件里。不便于我们查找。

2 、log4j 好处

  能够控制日志信息想往哪里打就往哪里打,比如:控制台、文件、邮箱、数据库等等
  能够控制日志信息想怎么打就怎么打,比如:我想要打印时间、程序的名称、程序的方法名、程序的行号、线程的名称等等
   能够控制日志信息想打什么打什么,不想打的就不打,日志信息是分级别的,有时候我只想看错误的信息或者警告的信息,有时候我想看到所有的信息我想调试程序等等,

 

一般日志的级别有: 
SEVERE (highest value) > WARNING > INFO > CONFIG > FINE > FINER > FINEST (lowest value) 

二、 使用 Log4j 来记录日志方法

  如果你只是想对当前的项目运用log4j,那么只需要将log4j.jar,log4j.properties分别放入项目的WEB-INFO/lib和WEB-INFO/classes文件夹下即可;但如果你想将log4j运用到所有运行于tomcat的项目中,那么还需要以下配置步骤:

1 、首先创建一个log4j.properties 文件,并将其放置在tomcat 的lib 目录$CATALINA_BASE/lib 下。以下配置内容为我的配置

log4j.rootLogger = INFO, stdout, logfile

#日志输出到控制台

log4j.appender.stdout = org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.ConversionLayout = %d [%t] %-5p %c - %m%n

#日志输出到文件

log4j.appender.logfile = org.apache.log4j.DailyRollingFileAppender

#${webapp.root}WEB-INF/logs/log4j.log 日志文件存放在tomcat编译项目web-inf/log目录下

log4j.appender.logfile.File = ${webapp.root}WEB-INF/logs/log4j.log

#日志的最大容量为10M
log4j.appender.logfile.maxFileSize=10240KB 

#是否追加写进文件    

log4j.appender.logfile.Append = true   

#输出DEBUG级别日志到文件中 

log4j.appender.logfile.Threshold = DEBUG    

log4j.appender.logfile.layout = org.apache.log4j.PatternLayout

log4j.appender.logfile.layout.ConversionPattern = %d [%t] %-5p %c - %m%n
 





#c3po config

log4j.logger.com.opensymphony=warn

log4j.logger.com.mchange=warn

#spring config

log4j.logger.org.springframework=warn

#mybatis config

log4j.logger.org.apache.ibatis.logging=warn

log4j.logger.org.apache.ibatis.datasource.pooled=warn

log4j.logger.org.apache.ibatis.transaction.jdbc=warn

log4j.logger.org.mybatis.spring=warn

log4j.logger.cn.com.widgetdo.mybatis.scanner=warn

#调试时看sql语句 将 warn变为 debug就可以了

log4j.logger.cn.com.widgetdo.mapper=debug

#axis config

log4j.logger.org.apache.axis=warn

log4j.logger.org.apache.axis.utils.JavaUtils=error

#quartz config

log4j.logger.org.quartz=warn

# beanutil config

log4j.logger.org.apache.commons.beanutils=warn

#struts2 config

log4j.logger.org.apache.struts2=ERROR

log4j.logger.freemarker=warn

log4j.appender.R.File=${catalina.home}/logs/tomcat.out

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=[%d{yyyy-MM-dd HH\:mm\:ss,SSS}] [%c] [%p] [%m]%n

#log4j.logger.com.opensymphony.xwork2=ERROR

2 、下载log4j 的jar 包,需要1.2 以上版本

下载地址: http://archive.apache.org/dist/logging/log4j/1.2.17/log4j-1.2.17.jar

3 、下载tomcat-juli.jar 、tomcat-juli-adapters.jar 作为tomcat 的外部组件。注意,此处的tomcat-juli.jar 和默认的不同,它包含了Apache Commons Logging的全部实现

所以建议直接访问下载地址:tomcat官网—>tomcat7:https://tomcat.apache.org/download-70.cgi
然后手动选择

①下载地址:

https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.96/bin/apache-tomcat-7.0.96.tar.gz

https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.96/bin/extras/tomcat-juli-adapters.jar

https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-7/v7.0.96/bin/extras/tomcat-juli.jar

此处只有最新的版本v7.0.96

 

4、如果你想使用log4j作为tomcat的全局配置,那么首先将log4j-1.2.17.jar、tomcat-juli-adapters.jar放入$CATALINA_HOME/lib目录下

5、将$CATALINA_HOME/bin/tomcat-juli.jar替换为下载的tomcat-juli.jar,并修改成755权限

 chmod 755 tomcat-juli.jar

6、如果有不同tomcat

  使用不同的$CATALINA_HOME和$CATALINA_BASE来运行tomcat,并且希望采用同一个$CATALINA_BASE来配置log4j,那么还需要下面几步操作:
1.创建$CATALINA_BASE/bin和$CATALINA_BASE/lib目录;
2.将log4j.jar和tomcat-juli-adapters.jar放入$CATALINA_BASE/lib下;
3.将tomcat-juli.jar放入$CATALINA_BASE/bin下;
4.如果你是以security manager运行的tomcat,那么还需要编辑$CATALINA_BASE/conf/catalina.policy文件来让它使用不同的tomcat-juli.jar.

7、删除$CATALINA_BASE/conf/logging.properties文件

8、重启tomcat

三、 使用log4j前后对比图

1、使用前

 

#######2、使用后(定义自己想要的格式)

 

 


 

 
 
 
 
 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章