120 lines
4.2 KiB
Java
120 lines
4.2 KiB
Java
package net.horizoncode.tickettest.logging;
|
|
|
|
import org.apache.commons.io.FileUtils;
|
|
|
|
import java.io.BufferedWriter;
|
|
import java.io.File;
|
|
import java.io.FileWriter;
|
|
import java.io.IOException;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.Date;
|
|
import java.util.concurrent.ConcurrentLinkedDeque;
|
|
|
|
public class Logger {
|
|
private final SimpleDateFormat dateFormat;
|
|
private final File logfile;
|
|
private final ConcurrentLinkedDeque<String> logList;
|
|
private final boolean debug;
|
|
|
|
public Logger(final File dir, boolean debug) {
|
|
this.debug = debug;
|
|
SimpleDateFormat dateFormat_logfile = new SimpleDateFormat("dd-MM-yyyy HH-mm-ss");
|
|
this.dateFormat = new SimpleDateFormat("HH:mm:ss");
|
|
this.logList = new ConcurrentLinkedDeque<>();
|
|
if (!dir.exists()) {
|
|
dir.mkdir();
|
|
}
|
|
final File latestdel = new File(dir, "latest.log");
|
|
if (latestdel.exists() && !latestdel.isDirectory()) {
|
|
final String date = dateFormat_logfile.format(new Date(latestdel.lastModified()));
|
|
final File newdatefile = new File(dir, date + ".log");
|
|
try {
|
|
FileUtils.copyFile(latestdel, newdatefile);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
this.logfile = new File(dir, "latest.log");
|
|
if (!this.logfile.exists()) {
|
|
try {
|
|
this.logfile.createNewFile();
|
|
} catch (IOException e2) {
|
|
e2.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
|
|
public void emptyLine() {
|
|
System.out.println(" ");
|
|
this.logToFile(" ");
|
|
}
|
|
|
|
public void logCommand(final String msg) {
|
|
this.logToFile("> " + msg);
|
|
}
|
|
|
|
public void info(final String msg) {
|
|
final String date = this.dateFormat.format(new Date());
|
|
final String[] split = msg.split("\n");
|
|
for (final String msgeh : split) {
|
|
final String colout = "\u001b[0m[" + date + " " + "\u001b[0;34m" + "INFO" + "\u001b[0m" + "] " + msgeh;
|
|
final String out = "[" + date + " INFO] " + ConsoleColors.stripColors(msgeh);
|
|
System.out.println(colout);
|
|
this.logToFile(out);
|
|
}
|
|
}
|
|
|
|
public void debug(final String msg) {
|
|
final String date = this.dateFormat.format(new Date());
|
|
final String[] split = msg.split("\n");
|
|
for (final String msgeh : split) {
|
|
final String colout = "\u001b[0m[" + date + " " + "\u001b[4;33m" + "DEBUG" + "\u001b[0m" + "] " + msgeh;
|
|
final String out = "[" + date + " DEBUG] " + ConsoleColors.stripColors(msgeh);
|
|
if (debug)
|
|
System.out.println(colout);
|
|
this.logToFile(out);
|
|
}
|
|
}
|
|
|
|
public void warning(final String msg) {
|
|
final String date = this.dateFormat.format(new Date());
|
|
final String[] split = msg.split("\n");
|
|
for (final String msgeh : split) {
|
|
final String colout = "\u001b[0m[" + date + " " + "\u001b[4;33m" + "WARN" + "\u001b[0m" + "] " + msgeh;
|
|
final String out = "[" + date + " WARN] " + ConsoleColors.stripColors(msgeh);
|
|
System.out.println(colout);
|
|
this.logToFile(out);
|
|
}
|
|
}
|
|
|
|
public void error(final String msg) {
|
|
final String date = this.dateFormat.format(new Date());
|
|
final String[] split = msg.split("\n");
|
|
for (final String msgeh : split) {
|
|
final String colout = "\u001b[0m[" + date + " " + "\u001b[1;31m" + "ERROR" + "\u001b[0m" + "] " + msgeh;
|
|
final String out = "[" + date + " ERROR] " + ConsoleColors.stripColors(msgeh);
|
|
System.out.println(colout);
|
|
this.logToFile(out);
|
|
}
|
|
}
|
|
|
|
private void logToFile(final String s) {
|
|
this.logList.add(s);
|
|
this.saveFile();
|
|
}
|
|
|
|
private void saveFile() {
|
|
try {
|
|
synchronized (this.logfile) {
|
|
final BufferedWriter bw = new BufferedWriter(new FileWriter(this.logfile));
|
|
for (final String str : this.logList) {
|
|
bw.write(str);
|
|
bw.newLine();
|
|
}
|
|
bw.close();
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
} |