mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 17:47:32 +00:00
101 lines
3.0 KiB
Java
101 lines
3.0 KiB
Java
package noppes.npcs;
|
|||
|
|
|
||
|
|
import java.io.File;
|
||
|
|
import java.io.FileOutputStream;
|
||
|
|
import java.io.IOException;
|
||
|
|
import java.io.PrintStream;
|
||
|
|
import java.io.PrintWriter;
|
||
|
|
import java.io.StringWriter;
|
||
|
|
import java.text.SimpleDateFormat;
|
||
|
|
import java.util.Date;
|
||
|
|
import java.util.logging.ConsoleHandler;
|
||
|
|
import java.util.logging.Formatter;
|
||
|
|
import java.util.logging.Handler;
|
||
|
|
import java.util.logging.Level;
|
||
|
|
import java.util.logging.LogRecord;
|
||
|
|
import java.util.logging.Logger;
|
||
|
|
import java.util.logging.StreamHandler;
|
||
|
|
|
||
|
|
public class LogWriter {
|
||
|
|
private final static String name = "CustomNPCs";
|
||
|
|
private final static Logger logger = Logger.getLogger(name);
|
||
|
|
private final static SimpleDateFormat dateformat = new SimpleDateFormat("HH:mm:ss");
|
||
|
|
private static Handler handler;
|
||
|
|
static {
|
||
|
|
try {
|
||
|
|
File dir = new File("logs");
|
||
|
|
if(!dir.exists())
|
||
|
|
dir.mkdir();
|
||
|
|
File file = new File(dir, name + "-latest.log");
|
||
|
|
File lock = new File(dir, name + "-latest.log.lck");
|
||
|
|
File file1 = new File(dir, name + "-1.log");
|
||
|
|
File file2 = new File(dir, name + "-2.log");
|
||
|
|
File file3 = new File(dir, name + "-3.log");
|
||
|
|
|
||
|
|
if(lock.exists())
|
||
|
|
lock.delete();
|
||
|
|
|
||
|
|
if(file3.exists())
|
||
|
|
file3.delete();
|
||
|
|
if(file2.exists())
|
||
|
|
file2.renameTo(file3);
|
||
|
|
if(file1.exists())
|
||
|
|
file1.renameTo(file2);
|
||
|
|
if(file.exists())
|
||
|
|
file.renameTo(file1);
|
||
|
|
|
||
|
|
handler = new StreamHandler(new FileOutputStream(file), new Formatter() {
|
||
|
|
@Override
|
||
|
|
public String format(LogRecord record) {
|
||
|
|
StackTraceElement element = Thread.currentThread().getStackTrace()[8];
|
||
|
|
String line = "[" + element.getClassName() + ":" + element.getLineNumber() + "] ";
|
||
|
|
String time = "[" + dateformat.format(new Date(record.getMillis())) + "][" + record.getLevel() + "]" + line;
|
||
|
|
if(record.getThrown() != null){
|
||
|
|
StringWriter sw = new StringWriter();
|
||
|
|
PrintWriter pw = new PrintWriter(sw);
|
||
|
|
record.getThrown().printStackTrace(pw);
|
||
|
|
return time + sw.toString();
|
||
|
|
}
|
||
|
|
return time + record.getMessage() + System.getProperty("line.separator");
|
||
|
|
}
|
||
|
|
});
|
||
|
|
handler.setLevel(Level.ALL);
|
||
|
|
logger.addHandler(handler);
|
||
|
|
logger.setUseParentHandlers(false);
|
||
|
|
Handler consoleHandler = new ConsoleHandler();
|
||
|
|
consoleHandler.setFormatter(handler.getFormatter());
|
||
|
|
consoleHandler.setLevel(Level.ALL);
|
||
|
|
logger.addHandler(consoleHandler);
|
||
|
|
|
||
|
|
logger.setLevel(Level.ALL);
|
||
|
|
info(new Date().toString());
|
||
|
|
} catch (SecurityException e) {
|
||
|
|
// TODO Auto-generated catch block
|
||
|
|
e.printStackTrace();
|
||
|
|
} catch (IOException e) {
|
||
|
|
// TODO Auto-generated catch block
|
||
|
|
e.printStackTrace();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public static void info(Object msg) {
|
||
|
|
logger.log(Level.FINE, msg.toString());
|
||
|
|
handler.flush();
|
||
|
|
}
|
||
|
|
|
||
|
|
public static void error(Object msg) {
|
||
|
|
logger.log(Level.SEVERE, msg.toString());
|
||
|
|
handler.flush();
|
||
|
|
}
|
||
|
|
|
||
|
|
public static void error(Object msg, Exception e) {
|
||
|
|
logger.log(Level.SEVERE, msg.toString());
|
||
|
|
logger.log(Level.SEVERE, e.getMessage(), e);
|
||
|
|
handler.flush();
|
||
|
|
}
|
||
|
|
|
||
|
|
public static void except(Exception e) {
|
||
|
|
logger.log(Level.SEVERE, e.getMessage(), e);
|
||
|
|
handler.flush();
|
||
|
|
}
|
||
|
|
}
|