import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.lang.reflect.Field;
import java.util.Date;import com.southinfo.kedaoservice.util.DateUtil;public class Logger {private Class<?> cls;private PrintStream printStream;public static Logger getLogger(Class<?> cls) {
String filePath = null;
try {
Class<?> forName = Class
.forName("com.southinfo.kedaoservice.core.Config");
Field declaredField = forName.getDeclaredField("ID");
filePath = "logs/[" + declaredField.get(null) + "]"
+ cls.getSimpleName() + ".log";
} catch (ClassNotFoundException e) {
filePath = "logs/[_]" + cls.getSimpleName() + ".log";
} catch (Exception e) {
System.err.println("生成日志文件出错!");
System.exit(1);
}Logger logger = new Logger();
logger.cls = cls;
try {
logger.printStream = new PrintStream(new FileOutputStream(new File(
filePath)));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return logger;
}public void info(String message) {
info(message, null);
}public void info(String message, Exception e) {
String output = DateUtil.format(new Date()) + " INFO "
+ cls.getSimpleName() + " " + message;
printStream.append(output + "\r\n");
System.out.println(output);
if (e != null) {
e.printStackTrace(printStream);
}
}public void error(String message) {
error(message, null);
}public void error(String message, Exception e) {
String output = DateUtil.format(new Date()) + " ERROR "
+ cls.getSimpleName() + " " + message;
printStream.append(output + "\r\n");
System.out.println(output);
if (e != null) {
e.printStackTrace(printStream);
}
}public void debug(String message) {
debug(message, null);
}public void debug(String message, Exception e) {
String output = DateUtil.format(new Date()) + " DEBUG "
+ cls.getSimpleName() + " " + message;
System.out.println(output);
printStream.append(output + "\r\n");
if (e != null) {
e.printStackTrace(printStream);
}
}public Class<?> getCls() {
return cls;
}public void setCls(Class<?> cls) {
this.cls = cls;
}public PrintStream getPrintStream() {
return printStream;
}public void setPrintStream(PrintStream printStream) {
this.printStream = printStream;
}}