Tomcat 日志清除(含扩展AccessLogValve)
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"/>-->
下图为配置文件开启访问日志,以及对应参数的解释:


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 size is------:" + this.currentLogFile.length());
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];
// 获取到第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,说明配置成功了
效果如下所示:

参考:
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>
Tomcat 日志清除(含扩展AccessLogValve)的更多相关文章
- tomcat 日志 按天自动分割 设定时任务定时清除
一.日志分割所需jar包 1.下载tomcat apache-tomcat-7.0.79.tar.gz 地址:http://www.apache.org/dist/tomcat/tomcat-7/ ...
- 清除tomcat日志文件的shell脚本
#! /bin/bash d=`date +%F` exec >> /mydata/script/logs/$d>& echo "开始执行清除tomcat日志文件& ...
- Tomcat日志问题
[Tomcat日志设定][tomcat控制台日志][log4j日志] 1 Tomcat 日志概述 Tomcat 日志信息分 为 两 类 : 一是运行中的日志,它主要 记录 运行的一些信息,尤其是一些异 ...
- Tomcat日志设定
1 Tomcat 日志概述 Tomcat 日志信息分 为 两 类 : 一.是运行中的日志,它主要 记录 运行的一些信息,尤其是一些异常 错误 日志信息 .二.是 访问 日志信息,它 记录 的 访 ...
- Tomcat日志系统详解
综合:Tomcat下相关的日志文件 Cataline引擎的日志文件,文件名catalina.日期.log Tomcat下内部代码丢出的日志,文件名localhost.日期.log(jsp页面内部错误的 ...
- 《Tomcat日志系统详解》
综合:Tomcat下相关的日志文件 Cataline引擎的日志文件,文件名catalina.日期.log Tomcat下内部代码丢出的日志,文件名localhost.日期.log(jsp页面内部错误的 ...
- [转]Tomcat日志详解
Tomcat下相关的日志文件: 1.Cataline引擎的日志文件,文件名为catalina.{date}.log 2.Tomcat下内部代码丢出的日志,文件名为localhost.{date}.lo ...
- 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
6月27日任务 16.4 配置Tomcat监听80端口16.5/16.6/16.7 配置Tomcat虚拟主机16.8 Tomcat日志扩展邱李的tomcat文档 https://www.linuser ...
- 自定义日志阅读器——包括了一个load取Tomcat日志的分析器
最近在写往公司产品里添加Tomcat适配器,以支持Tomcat.有一些功能需要摘取到Tomcat的部分日志.没有合适的工具,也不想去网上找了,就自己写了一个. 简单的画了一下设计方案: 下面直接上代码 ...
随机推荐
- 基于Node.js实现一个小小的爬虫
以前一直听说有爬虫这种东西,稍微看了看资料,貌似不是太复杂. 正好了解过node.js,那就基于它来个简单的爬虫. 1.本次爬虫目标: 从拉钩招聘网站中找出“前端开发”这一类岗位的信息,并作相应页面分 ...
- 警惕!高版本VS发布时预编译导致Mono中Razor找不到视图
早前一段时间,一位朋友在Q群里面找到我,说它按照<Linux.NET学习手记>的操作,把一个ASP.NET MVC 4.0的项目部署到Mono之后出现Razor无法找到视图的现象.当时费了 ...
- 2000条你应知的WPF小姿势 基础篇<78-81 Dialog/Location/WPF设备无关性>
在正文开始之前需要介绍一个人:Sean Sexton. 来自明尼苏达双城的软件工程师.最为出色的是他维护了两个博客:2,000ThingsYou Should Know About C# 和 2,00 ...
- .NET里简易实现IoC
.NET里简易实现IoC 前言 在前面的篇幅中对依赖倒置原则和IoC框架的使用只是做了个简单的介绍,并没有很详细的去演示,可能有的朋友还是区分不了依赖倒置.依赖注入.控制反转这几个名词,或许知道的也只 ...
- WinForm中显示PDF文件
一.VS2013中,菜单-工具-选择工具箱项-COM组件-勾选“Adobe PDF Reader”-确定 二.在工具箱中就可以看到Adobe PDF Reader控件了,拖到窗体上. 拖到窗体上之后, ...
- 浅谈系列之 javascript原型与对象
在我学习与使用javascript三个月中,我一直对javascript的继承关系以及prototype理解不清,导致很多时候为什么这么用说不出个所以然来.截止到本周为止,通过之前的学习以及自己的再学 ...
- 简单动态规划-LeetCode198
题目:House Robber You are a professional robber planning to rob houses along a street. Each house has ...
- linux内核调试技术之printk
原创博客:欢迎转载,转载请注明出处https://i.cnblogs.com/EditPosts.aspx?postid=6218383 1.简介(基于s3c2440 linux) 在内核调试技术之中 ...
- 在idea中maven项目jdk编译version总是跳到1.5
bug描述 项目ide: idea 项目构建工具:maven bug现象:每次修改pom之后,idea自动扫描一遍,然后发现默认的compile级别跳到5.0. 每次手动去setting里修改comp ...
- javaWeb https连接器
互联网加密原理 tomcat服务器启动时候会启动多个Connector(连接器),而Tomcat服务器的连接器又分为加密连接器和非加密连接器 .(一般我们使用http协议的是非加密,https的是加密 ...