⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logrecorder.java

📁 java 小型系统连接池参照适用于中小型网站
💻 JAVA
字号:
package ntis.com.util;

import ntis.com.base.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
import java.util.StringTokenizer;
import java.util.TimeZone;

public class LogRecorder extends OperatorImple {
  public static final int WRITE_LOG = 1;

  private final long TWENTY_FOUR_HOURS = 86400000;
  private String fileName      = "";
  private long   rotateTime    = 0;
  private int    numberToLeave = 0;

  public LogRecorder() {}

  public void init(String[] params) throws Exception {
    super.init(params);

    fileName = getParam("fileName");

    StringTokenizer st = new StringTokenizer(getParam("rotateTime"), ":");
    int _hh = Integer.parseInt(st.nextToken());
    int _mm = Integer.parseInt(st.nextToken());

    long _currentTime = System.currentTimeMillis();
    rotateTime = _currentTime / TWENTY_FOUR_HOURS;
    rotateTime = rotateTime * TWENTY_FOUR_HOURS + (_hh * 60 + _mm) * 60 * 1000 - TimeZone.getDefault().getRawOffset();

    while (rotateTime < _currentTime) {
      System.out.println("愗傝懼偊帪崗曗惓");
      rotateTime += TWENTY_FOUR_HOURS;
    }

    numberToLeave = Integer.parseInt(getParam("numberToLeave"));

    renameLogFile();
    deleteLogFile();
  }

  private void renameLogFile() throws Exception {
    File _fileBefore = new File(fileName);
    File _fileAfter  = new File(_fileBefore.getParent() + File.separator + UniqueName.getInstance().get() + "_" + _fileBefore.getName());

    System.out.println(_fileBefore.getName() + "傪儕僱乕儉偟傑偡丅");

    _fileBefore.renameTo(_fileAfter);
    (new File(fileName)).createNewFile();
  }

  private void deleteLogFile() {
    final File _file  = new File(fileName);
    File[] _files = (new File(_file.getParent())).listFiles(
      new FileFilter() {
        public boolean accept(File pathname) {
          boolean result = false;
          if(pathname.getName().endsWith(_file.getName())) {result = true;}
          return result;
        }
      }
    );

    Arrays.sort(_files,
      new Comparator() {
        public int compare(Object obj1, Object obj2) {
          String data1 = String.valueOf(((File)obj1).lastModified());
          String data2 = String.valueOf(((File)obj2).lastModified());
          return data1.compareToIgnoreCase(data2);
        }
      }
    );

    System.out.println("尰嵼曐懚偝傟偰偄傞儘僌僼傽僀儖偺儕僗僩");

    for(int i = 0; i < _files.length; i++) {
      System.out.println(_files[i].getName());
    }

    if(numberToLeave < _files.length) {
      System.out.println("儘僌僼傽僀儖偺悢偑愝掕偝傟偨曐懚悢傪挻偊偰偄傑偡丅");

      for(int i = 0 ; i < _files.length - numberToLeave; i++) {
        System.out.println(_files[i].getName() + "傪嶍彍偟傑偡丅");
        _files[i].delete();
      }
    }
  }

  public Object[] execute(int type, Object[] params) throws Exception {
    switch(type) {
      case WRITE_LOG :
        long   _serverTime    = System.currentTimeMillis();
        String _strServerTime = (new SimpleDateFormat("yyyy_MM_dd HH:mm:ss")).format(new Date(_serverTime)) + " ";

        if (_serverTime >= rotateTime) {
          System.out.println("儘僌偺愗傝姺偊帪崗偵払偟傑偟偨丅");

          renameLogFile();
          deleteLogFile();
          rotateTime += TWENTY_FOUR_HOURS;
        }

        FileWriter _fout = new FileWriter(fileName, true);
        _fout.write(_strServerTime + (String)params[0] + "\n");
        _fout.close();
      break;
    }

    return params;
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -