设为首页 收藏本站
查看: 993|回复: 0

[经验分享] Tomcat 日志清除(含扩展AccessLogValve)

[复制链接]

尚未签到

发表于 2017-12-26 09:12:14 | 显示全部楼层 |阅读模式
  1、tomcat的访问日志AccessLogs定期或者定量删除
  a 开启tomcat访问日志
  编辑${catalina}/conf/server.xml文件.注:${catalina}是tomcat的安装目录
  把以下的注释(<!-- -->)去掉即可。
  <!--<ValveclassName="org.apache.catalina.valves.AccessLogValve"
  directory="logs"  prefix="localhost_access_log."suffix=".txt"
  pattern="common" resolveHosts="false"/>-->
  下图为配置文件开启访问日志,以及对应参数的解释:
DSC0000.png DSC0001.png

  b extend the AccessLogValve by override this function: log(),设置定期或定量删除访问日志
  

public void emptyFile() {  String logPath
= System.getProperty("catalina.base");// rotatable=false,定量清除只有一个日志文件localhost_access_log.log  if (this.rotatable == false) {
  synchronized (this) {

  System.out.println("------log>  if (this.currentLogFile.length() > 10 * 1024) {
  this.currentLogFile.delete();
  open();
  }
  }
  } else {
  // 含有日期的日志清除方式`
  // localhost_access_log.2016-12-16.23.37.log
  // localhost_access_log.2016-12-16.23.39.log
  if (new File(logPath).isDirectory()) {
  // 获取文件夹中的文件集合
  File[] logs = new File(logPath).listFiles();
  // 设置系统这里设置的日期格式,和配置文件里的参数保持一致
  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd.HH.mm");
  // 遍历集合
  for (int i = 0; i < logs.length; i++) {
  File log = logs;
  // 获取到第i个日志的名称,截取中间的日期字段,转成long型s
  int start = log.getName().indexOf(".") + 1;
  int end = log.getName().lastIndexOf(".");
  // 获取到的日志名称中的时间(2016-12-16.23.37)
  String dateStr = logPath.substring(start, end);
  // 将字符串型的(2016-12-16.23.37)转换成long型
  long lonInt = 0;
  try {
  lonInt = dateFormat.parse(dateStr).getTime();
  } catch (ParseException e) {
  // TODO Auto-generated catch block
  
                        e.printStackTrace();
  }
  System.out.println("------old-log date is------:" + lonInt);
  // 系统时间减去日志名字中获取的时间差大于配置文件中设置的时间删除
  if ((System.currentTimeMillis() - lonInt) / (1000 * 60) > 10) {
  log.delete();
  open();
  }
  }
  }
  }
  

  }
  

  2、tomcat的普通日志(catlina.out、localhost)配置log4j日志框架实现日志回滚
Log4j配置tomcat日志,定期删除:

首先,需要下载3个jar包.

tomcat-juli.jar 和 tomcat-juli-adapters.jar、log4j.jar

http://www.apache.org/dist/logging/log4j/1.2.17/

http://www.apache.org/dist/tomcat/tomcat-7/v7.0.69/bin/extras/


3个jar包一次放入的目录为:

tomcat-juli-adapters.jar 和 log4j.jar放入 ($CATALINA_BASE/lib)目录下

tomcat-juli.jar放入 $CATALINA_BASE/bin/目录,直接覆盖原有的tomcat-juli.jar即可


删除$CATALINA_BASE/conf/logging.properties文件,防止java.util.logging生成零长度的日志文件。


修改Tomcat中的conf/context.xml文件,将<Context>为<Context swallowOutput="true">。


最后,在tomcat6.0.43/lib目录下创建一个log4j.properties, 加入如下内容并保存:

(这里以定期清理catalina.out为例)

******************************************************************************

log4j.rootLogger = INFO, CATALINA


# Define all the appenders

log4j.appender.CATALINA = org.apache.log4j.DailyRollingFileAppender

log4j.appender.CATALINA.File = ${catalina.base}/logs/catalina

log4j.appender.CATALINA.Append = true

log4j.appender.CATALINA.Encoding = UTF-8

# Roll-over the log once per day

log4j.appender.CATALINA.DatePattern = '.'yyyy-MM-dd'.log'

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

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


log4j.appender.LOCALHOST = org.apache.log4j.DailyRollingFileAppender

log4j.appender.LOCALHOST.File = ${catalina.base}/logs/localhost

log4j.appender.LOCALHOST.Append = true

log4j.appender.LOCALHOST.Encoding = UTF-8

log4j.appender.LOCALHOST.DatePattern = '.'yyyy-MM-dd'.log'

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

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


log4j.appender.MANAGER = org.apache.log4j.DailyRollingFileAppender

log4j.appender.MANAGER.File = ${catalina.base}/logs/manager

log4j.appender.MANAGER.Append = true

log4j.appender.MANAGER.Encoding = UTF-8

log4j.appender.MANAGER.DatePattern = '.'yyyy-MM-dd'.log'

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

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


log4j.appender.HOST-MANAGER = org.apache.log4j.DailyRollingFileAppender

log4j.appender.HOST-MANAGER.File = ${catalina.base}/logs/host-manager

log4j.appender.HOST-MANAGER.Append = true

log4j.appender.HOST-MANAGER.Encoding = UTF-8

log4j.appender.HOST-MANAGER.DatePattern = '.'yyyy-MM-dd'.log'

log4j.appender.HOST-MANAGER.layout = org.apache.log4j.PatternLayout

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


log4j.appender.CONSOLE = org.apache.log4j.ConsoleAppender

log4j.appender.CONSOLE.Encoding = UTF-8

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

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


# Configure which loggers log to which appenders

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost] = INFO, LOCALHOST

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager] =\

INFO, MANAGER

log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/host-manager] =\


INFO, HOST-MANAGER



重启tomcat,就可以看到java -Djava.util.logging.config.file变成了java -Dnop -Djava.util.logging.config.file,说明配置成功了


效果如下所示:

   DSC0002.png
  参考:
  http://alvinalexander.com/java/jwarehouse/apache-tomcat-6.0.16/java/org/apache/catalina/valves/AccessLogValve.java.shtml
  http://code.taobao.org/p/tomcat/diff/3/tc8.0.x/java/org/apache/catalina/valves/AccessLogValve.java
  http://www.tuicool.com/articles/ymyiuiu
  http://sanwen8.cn/p/520j7Qi.html
  http://www.cnblogs.com/dimmacro/p/5566480.html
  http://blog.csdn.net/jackljf/article/details/17428335
  Shell 分析tomcat访问日志 格式
  http://www.cnblogs.com/zhwj184/archive/2013/03/28/3027422.html
  java类写入日志和定时删除日志
  http://blog.csdn.net/high2011/article/details/50451216
  http://blog.csdn.net/jsky_studio/article/details/41686597?spm=5176.8246799.blogcont.4.WnVUiV>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-428131-1-1.html 上篇帖子: Window下JDK、Tomcat、eclipse安装与配置 下篇帖子: tomcat https 配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表