我不知道是我的想法愚弄了我还是这真的行不通。
我需要不同类型的 Logging 类,所以我创建了一个抽象类,所有类都具有相同的唯一定义是 writeToLog 的处理方式:
public abstract class LoggerTemplate {
protected String filename ="log/";
protected File logfile;
protected FileWriter fw;
public void writeToLog(String message) {
if(fw != null) {
try {
message = new SimpleDateFormat("dd-MM-hh:mm").format(new Date()) + " " + message;
fw.write(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
具体的子类将在其构造函数中实现其余逻辑,即其中之一:
public class JitterBufferLogger extends LoggerTemplate {
public JitterBufferLogger() {
super();
filename += new SimpleDateFormat("yyyyddMMhhmm'.log'").format(new Date());
if(!new File("log/").exists())
new File("log").mkdir();
logfile = new File(filename);
try {
logfile.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
try {
fw = new FileWriter(logfile);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
但是当我调试时,我可以看到在为特定记录器调用 writeToLog 时,它会跳转到 LoggerTemplate 方法,因此 fw 和 logfile 为空。所以它不起作用。
它不应该工作还是我只是把事情搞砸了,应该进入周末;-)