📄 logrecorder.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 + -