From a7dfdd04834e98b2b5f4860ad01a54bf42344755 Mon Sep 17 00:00:00 2001 From: Stefan CORDES Date: Thu, 26 Jan 2017 20:58:25 +0100 Subject: [PATCH] own logging framework --- pom.xml | 41 +------ .../de/quaddy_services/proxy/EscapeProxy.java | 5 +- .../proxy/EscapeProxyConfig.java | 5 +- .../proxy/EscapeProxyWorkerAccept.java | 8 +- .../proxy/EscapeProxyWorkerSocket.java | 4 +- .../LoggingUncaughtExceptionHandler.java | 7 +- .../proxy/logging/FileLogger.java | 43 +++++++ .../quaddy_services/proxy/logging/Logger.java | 110 ++++++++++++++++++ .../proxy/logging/LoggerFactory.java | 49 ++++++++ 9 files changed, 217 insertions(+), 55 deletions(-) create mode 100644 src/main/java/de/quaddy_services/proxy/logging/FileLogger.java create mode 100644 src/main/java/de/quaddy_services/proxy/logging/Logger.java create mode 100644 src/main/java/de/quaddy_services/proxy/logging/LoggerFactory.java diff --git a/pom.xml b/pom.xml index a440ef9..8731ba6 100644 --- a/pom.xml +++ b/pom.xml @@ -3,21 +3,8 @@ de.quaddy_services escape-from-intranet jar - 1.3 + 1.4 https://github.com/quaddy-services/escape-from-intranet - - - ch.qos.logback - logback-classic - 1.1.7 - - - junit - junit - 4.11 - test - - @@ -32,6 +19,7 @@ org.apache.maven.plugins maven-jar-plugin + escape-from-intranet de.quaddy_services.proxy.EscapeProxy @@ -59,31 +47,6 @@ true - - org.apache.maven.plugins - maven-assembly-plugin - - - - attached - - package - - false - escape-from-intranet - - jar-with-dependencies - - - - de.quaddy_services.proxy.EscapeProxy - - - - - - - \ No newline at end of file diff --git a/src/main/java/de/quaddy_services/proxy/EscapeProxy.java b/src/main/java/de/quaddy_services/proxy/EscapeProxy.java index 583ea2f..34351bc 100644 --- a/src/main/java/de/quaddy_services/proxy/EscapeProxy.java +++ b/src/main/java/de/quaddy_services/proxy/EscapeProxy.java @@ -27,10 +27,9 @@ import javax.swing.Timer; import javax.swing.WindowConstants; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import de.quaddy_services.proxy.events.PortStatusListener; +import de.quaddy_services.proxy.logging.Logger; +import de.quaddy_services.proxy.logging.LoggerFactory; /** * diff --git a/src/main/java/de/quaddy_services/proxy/EscapeProxyConfig.java b/src/main/java/de/quaddy_services/proxy/EscapeProxyConfig.java index 3329e68..3439222 100644 --- a/src/main/java/de/quaddy_services/proxy/EscapeProxyConfig.java +++ b/src/main/java/de/quaddy_services/proxy/EscapeProxyConfig.java @@ -19,12 +19,11 @@ import javax.crypto.spec.SecretKeySpec; import javax.swing.event.EventListenerList; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import de.quaddy_services.proxy.events.CheckPortListener; import de.quaddy_services.proxy.events.LogEventListener; import de.quaddy_services.proxy.events.PortStatusListener; +import de.quaddy_services.proxy.logging.Logger; +import de.quaddy_services.proxy.logging.LoggerFactory; /** * diff --git a/src/main/java/de/quaddy_services/proxy/EscapeProxyWorkerAccept.java b/src/main/java/de/quaddy_services/proxy/EscapeProxyWorkerAccept.java index ec94458..2c0e35e 100644 --- a/src/main/java/de/quaddy_services/proxy/EscapeProxyWorkerAccept.java +++ b/src/main/java/de/quaddy_services/proxy/EscapeProxyWorkerAccept.java @@ -10,10 +10,9 @@ import java.util.HashSet; import java.util.Set; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import de.quaddy_services.proxy.events.CheckPortListener; +import de.quaddy_services.proxy.logging.Logger; +import de.quaddy_services.proxy.logging.LoggerFactory; /** * @@ -120,7 +119,7 @@ private void acceptConnections(ServerSocket aServerSocket) { EscapeProxyWorkerSocket tempEscapeProxyWorkerSocket = new EscapeProxyWorkerSocket(config, tempSocket); tempEscapeProxyWorkerSocket.start(); } else { - config.fireLogEvent(tempInetAddress+" not localhost, closing " + tempSocket); + config.fireLogEvent(tempInetAddress + " not localhost, closing " + tempSocket); tempSocket.close(); } } catch (IOException | RuntimeException e) { @@ -132,6 +131,7 @@ private void acceptConnections(ServerSocket aServerSocket) { } private Set isLocalhostCache = new HashSet<>(); + /** * */ diff --git a/src/main/java/de/quaddy_services/proxy/EscapeProxyWorkerSocket.java b/src/main/java/de/quaddy_services/proxy/EscapeProxyWorkerSocket.java index aa079da..90bef56 100644 --- a/src/main/java/de/quaddy_services/proxy/EscapeProxyWorkerSocket.java +++ b/src/main/java/de/quaddy_services/proxy/EscapeProxyWorkerSocket.java @@ -15,8 +15,8 @@ import java.util.List; import java.util.Map; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import de.quaddy_services.proxy.logging.Logger; +import de.quaddy_services.proxy.logging.LoggerFactory; /** * diff --git a/src/main/java/de/quaddy_services/proxy/LoggingUncaughtExceptionHandler.java b/src/main/java/de/quaddy_services/proxy/LoggingUncaughtExceptionHandler.java index 654d8e8..98551e2 100644 --- a/src/main/java/de/quaddy_services/proxy/LoggingUncaughtExceptionHandler.java +++ b/src/main/java/de/quaddy_services/proxy/LoggingUncaughtExceptionHandler.java @@ -2,15 +2,14 @@ import java.lang.Thread.UncaughtExceptionHandler; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import de.quaddy_services.proxy.logging.Logger; +import de.quaddy_services.proxy.logging.LoggerFactory; /** * */ public class LoggingUncaughtExceptionHandler implements UncaughtExceptionHandler { - private static final Logger LOGGER = LoggerFactory.getLogger(LoggingUncaughtExceptionHandler.class); /** @@ -18,7 +17,7 @@ public class LoggingUncaughtExceptionHandler implements UncaughtExceptionHandler */ @Override public void uncaughtException(Thread aT, Throwable aE) { - LOGGER.error("Error in "+aT,aE); + LOGGER.error("Error in " + aT, aE); } } diff --git a/src/main/java/de/quaddy_services/proxy/logging/FileLogger.java b/src/main/java/de/quaddy_services/proxy/logging/FileLogger.java new file mode 100644 index 0000000..83a970a --- /dev/null +++ b/src/main/java/de/quaddy_services/proxy/logging/FileLogger.java @@ -0,0 +1,43 @@ +package de.quaddy_services.proxy.logging; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.time.LocalDateTime; + +/** + * + */ +public class FileLogger { + private File file; + + FileLogger(File aFile) { + file = aFile; + } + + /** + * + */ + public synchronized void log(String aPrefix, String aLevel, String aMessage, Throwable aE) { + try { + FileWriter tempFileWriter = new FileWriter(file, true); + try { + String tempText = LocalDateTime.now().toString() + ":" + aLevel + ":" + aPrefix + ":" + aMessage; + System.out.println(tempText); + tempFileWriter.write(tempText); + if (aE != null) { + tempFileWriter.write(System.lineSeparator()); + aE.printStackTrace(new PrintWriter(tempFileWriter)); + aE.printStackTrace(); + } + tempFileWriter.write(System.lineSeparator()); + } finally { + tempFileWriter.close(); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/de/quaddy_services/proxy/logging/Logger.java b/src/main/java/de/quaddy_services/proxy/logging/Logger.java new file mode 100644 index 0000000..75d2391 --- /dev/null +++ b/src/main/java/de/quaddy_services/proxy/logging/Logger.java @@ -0,0 +1,110 @@ +package de.quaddy_services.proxy.logging; + +/** + * + */ +public class Logger { + + private String prefix; + private FileLogger fileLogger; + private Boolean debugEnabled; + private Boolean traceEnabled; + + /** + * + */ + public Logger(String aPrefix, FileLogger aFile) { + prefix = aPrefix; + fileLogger = aFile; + } + + /** + * + */ + public void info(String aMessage) { + info(aMessage, (Throwable) null); + } + + /** + * + */ + public void error(String aMessage, Throwable aE) { + fileLogger.log(prefix, "error", aMessage, aE); + } + + /** + * + */ + public void debug(String aMessage, Throwable aE) { + if (isDebugEnabled()) { + fileLogger.log(prefix, "debug", aMessage, aE); + } + } + + /** + * + */ + public void debug(String aString, Object anObject) { + if (isDebugEnabled()) { + debug(aString.replaceFirst("\\{\\}", String.valueOf(anObject))); + } + } + + /** + * + */ + public boolean isDebugEnabled() { + if (debugEnabled == null) { + String tempDefaultLevel = System.getProperty("defaultLogLevel"); + debugEnabled = "debug".equalsIgnoreCase(tempDefaultLevel); + } + return debugEnabled; + } + + public boolean isTraceEnabled() { + if (traceEnabled == null) { + String tempDefaultLevel = System.getProperty("defaultLogLevel"); + traceEnabled = "trace".equalsIgnoreCase(tempDefaultLevel); + } + return traceEnabled; + } + + /** + * + */ + public void debug(String aString) { + debug(aString, (Throwable) null); + } + + /** + * + */ + public void info(String aMessage, Throwable aE) { + fileLogger.log(prefix, "info", aMessage, aE); + + } + + /** + * + */ + public void error(String aString) { + error(aString, (Throwable) null); + } + + /** + * + */ + public void debug(String aString, Object aO1, Object aO2) { + debug(aString.replaceFirst("\\{\\}", String.valueOf(aO1)).replaceFirst("\\{\\}", String.valueOf(aO2))); + } + + /** + * + */ + public void trace(String aString) { + if (isTraceEnabled()) { + fileLogger.log(prefix, "trace", aString, (Throwable) null); + } + } + +} diff --git a/src/main/java/de/quaddy_services/proxy/logging/LoggerFactory.java b/src/main/java/de/quaddy_services/proxy/logging/LoggerFactory.java new file mode 100644 index 0000000..e888f49 --- /dev/null +++ b/src/main/java/de/quaddy_services/proxy/logging/LoggerFactory.java @@ -0,0 +1,49 @@ +package de.quaddy_services.proxy.logging; + +import java.io.File; + +/** + * + */ +public class LoggerFactory { + + private static LoggerFactory instance; + private FileLogger fileLogger; + + /** + * + */ + public static Logger getLogger(Class aClass) { + return getInstance().getLoggerFor(aClass); + } + + /** + * + */ + private Logger getLoggerFor(Class aClass) { + String aName = aClass.getName(); + + return new Logger(aName.substring(aName.lastIndexOf(".") + 1), fileLogger); + } + + /** + * + */ + private static synchronized LoggerFactory getInstance() { + if (instance == null) { + File temp3 = new File(System.getProperty("java.io.tmpdir") + "/escape-from-intranet-3.log"); + temp3.delete(); + File temp2 = new File(System.getProperty("java.io.tmpdir") + "/escape-from-intranet-2.log"); + temp2.renameTo(temp3); + File temp1 = new File(System.getProperty("java.io.tmpdir") + "/escape-from-intranet-1.log"); + temp1.renameTo(temp2); + File temp0 = new File(System.getProperty("java.io.tmpdir") + "/escape-from-intranet.log"); + temp0.renameTo(temp1); + + instance = new LoggerFactory(); + instance.fileLogger = new FileLogger(temp0); + } + return instance; + } + +}