程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Tomcat 日志清除(含擴展AccessLogValve),tomcataccess日志

Tomcat 日志清除(含擴展AccessLogValve),tomcataccess日志

編輯:JAVA綜合教程

Tomcat 日志清除(含擴展AccessLogValve),tomcataccess日志


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日志框架實現日志回滾

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved