📄 filelogwriter.java.svn-base
字号:
package com.gisinfo.common.log;
import com.gisinfo.common.util.CommonUtil;
import java.util.List;
import java.io.*;
/**
* User: Ken
* Date: 2008-5-21
* Time: 17:14:58
*/
public class FileLogWriter extends LogWriter {
private File logFile = null;
private double maxFileSize = 5; //5M
private boolean settingIsRight = true;
private int count = 0;
private static boolean makeDir(File dir) {
if (dir == null) return false;
if (dir.exists()) return true;
if(!makeDir(dir.getParentFile())) return false;
/*File parent = dir.getParentFile();
if (parent == null) return false;
if (parent.exists()) return true;
if (!makeDir(parent)) return false;
if (!parent.exists() && !parent.mkdir()) return false;*/
return dir.mkdir();
}
protected void init() {
String file = (String) this.getProperties().get("file");
maxFileSize = CommonUtil.getDouble(this.getProperties().get("maxFileSize"), 5);
logFile = new File(file);
if (!logFile.exists())
try {
if (!logFile.getParentFile().exists()) {
logFile.getParentFile().mkdir();
}
settingIsRight = makeDir(logFile.getParentFile()) && logFile.createNewFile();
} catch (IOException e) {
settingIsRight = false;
LoggerConfig.writeInfo(e);
}
if (!logFile.exists()) {
LoggerConfig.writeInfo("无法创建日志文件!");
} else if (!logFile.isFile()) {
settingIsRight = false;
LoggerConfig.writeInfo("日志文件不能是目录!");
}
if (!settingIsRight)
LoggerConfig.writeInfo("请检查日志文件配置是否正确!");
}
protected void writeLog(List<LogEvent> event) throws LogException {
if (!settingIsRight) return;
checkLogFile(logFile);
doRealWriteFile(event, logFile);
//To change body of implemented methods use File | Settings | File Templates.
}
protected void doRealWriteFile(List<LogEvent> event, File logFile) {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(logFile, true));
for (LogEvent e : event) {
bw.append(String.valueOf(e));
bw.newLine();
}
bw.close();
} catch (IOException e) {
LoggerConfig.writeInfo(e);
}
}
private void checkLogFile(File logFile) {
long length = logFile.length();
if (length < this.maxFileSize * 1024 * 1024) return;
String fileName = logFile.getName();
File f = new File(logFile.getParent(), getBakFileName(fileName));
while (f.exists()) {
f = new File(logFile.getParent(), getBakFileName(fileName));
}
if (!logFile.renameTo(f)) return;
logFile = new File(logFile.getParent(), fileName);
}
public String getBakFileName(String fileName) {
int pos = fileName.lastIndexOf(".");
if (pos == -1) return fileName + "_bak_" + (++count);
else return fileName.substring(0, pos) + "_bak_" + (++count) + fileName.substring(pos);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -