阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Tomcat 日志清除(含扩展AccessLogValve)

157次阅读
没有评论

共计 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”/>–>

下图为配置文件开启访问日志,以及对应参数的解释:

Tomcat 日志清除(含扩展 AccessLogValve)Tomcat 日志清除(含扩展 AccessLogValve)

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 日志清除(含扩展 AccessLogValve)

更多 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

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计5274字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中