Async-Ticket-Test/src/net/horizoncode/tickettest/logging/Logger.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();
}
}
}