闲话不说,直接上代码,有图有真相。。。
package com;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
public class Dbuglog {
static public Dbuglog Dbuglog; // 唯一实例
static public int flog;
private PrintWriter logs=null;
private String classname="";
/**
* 将文本信息写入日志文件
*/
static synchronized public Dbuglog getInstance() {
if (Dbuglog == null) {
Dbuglog = new Dbuglog();
}
flog++;
return Dbuglog;
}
private Dbuglog() {
String logFile = getlogfile();
try {
// System.out.print(logFile);
logs = new PrintWriter(new FileWriter(logFile, true), true);
logFile=null;
} catch (IOException e) {
System.err.println("无法打开日志文件: " + logFile);
logFile=null;
}
}
public void Setclassname(String name){
this.classname=name;
}
public void write(String msg) {
logs.println(getdate("yyyy-MM-dd HH:mm:ss") +" "+ classname+": " + msg);
}
/**
* 将文本信息与异常写入日志文件
*/
public void write(Throwable e, String msg) {
logs.println(getdate("yyyy-MM-dd HH:mm:ss") +" "+ classname+ ": " + msg);
e.printStackTrace(logs);
}
private String getlogfile() {
String path1 = this.getClass().getResource("/").getPath();
path1 = path1.substring(1, path1.indexOf("WEB-INF")) + "logs/";
try {
path1 = java.net.URLDecoder.decode(path1, "utf-8");
File dirFile = new File(path1);
if (!dirFile.exists()) {
if (!dirFile.mkdir())
throw new Exception("日志目录不存在,创建失败!");
}
path1 = path1 + getdate("yyyy-MM-dd") + ".txt";
dirFile = new File(path1);
if (!dirFile.exists()) {
if (!dirFile.createNewFile()) {
throw new Exception("日志文件不存在,创建失败!");
}
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return path1;
}
private String getdate(String format) {
SimpleDateFormat tempDate = new SimpleDateFormat(format);
tempDate.setTimeZone(TimeZone.getTimeZone("GMT+8"));
return tempDate.format(new java.util.Date());
}
}