共计 5274 个字符,预计需要花费 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”/>–>
下图为配置文件开启访问日志,以及对应参数的解释:
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,说明配置成功了
效果如下所示:
更多 Tomcat 相关教程见以下内容:
CentOS 6.6 下安装配置 Tomcat 环境 http://www.linuxidc.com/Linux/2015-08/122234.htm
RedHat Linux 5.5 安装 JDK+Tomcat 并部署 Java 项目 http://www.linuxidc.com/Linux/2015-02/113528.htm
Tomcat 权威指南(第二版)(中英高清 PDF 版 + 带书签) http://www.linuxidc.com/Linux/2015-02/113062.htm
Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm
Linux 下使用 Xshell 查看 Tomcat 实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm
CentOS 64-bit 下安装 JDK 和 Tomcat 并设置 Tomcat 开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm
CentOS 6.5 下安装 Tomcat http://www.linuxidc.com/Linux/2015-01/111415.htm
Tomcat 中 session 的管理机制 http://www.linuxidc.com/Linux/2016-09/135072.htm
Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-12/138513.htm