From c24151e665b504396a30690429c850b5dacdd86c Mon Sep 17 00:00:00 2001 From: ahren Date: Mon, 20 Nov 2023 12:56:00 +0100 Subject: [PATCH] ohmLogger implementiert --- .gitignore | 2 + src/bandit/util/OhmLogger.java | 73 ++++++++++++++++++++++++++++------ src/config.properties | 5 +++ 3 files changed, 68 insertions(+), 12 deletions(-) create mode 100644 src/config.properties diff --git a/.gitignore b/.gitignore index f53fb92..187bdfe 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,3 @@ /nbproject/private/ +/build/ +/dist/ diff --git a/src/bandit/util/OhmLogger.java b/src/bandit/util/OhmLogger.java index 3d48b4f..c53bb8a 100644 --- a/src/bandit/util/OhmLogger.java +++ b/src/bandit/util/OhmLogger.java @@ -5,50 +5,99 @@ package bandit.util; +import java.io.IOException; +import java.io.InputStream; import java.time.LocalDateTime; +import java.util.Properties; import java.util.logging.*; /** - * - * @author le + * Klasse zur eigens konfigurierten Log-Ausgabe in der Console + * @author ahrens */ public class OhmLogger { + private static final String LOGGER_NAME = "OhmLogger"; private static Logger lg = null; - private OhmLogger() //Singelton-Patter -> privater ctor -> anlegen nur über klassenmethode möglich + /** + * privater Konstrukter -> Singleton + */ + private OhmLogger() { } + /** + * Public Method zum Erstellen des Loggers und zum Aufruf der Methode + * zum Initialisieren + * @return Referenz auf Logger + */ public static Logger getLogger() { if (lg == null) { - lg = Logger.getLogger("OhmLogger"); + lg = Logger.getLogger(LOGGER_NAME); initLogger(); } return lg; } + /** + * Methode zum Initialisieren, Suchen der Konfigurationsdatei, Anlegen eines + * neuen Console Handlers, Löschen der bisherigen Standard Handler und + * Einfügen des eigenen Handler, Setzen des Levels, je nach Properties + */ private static void initLogger() { -// FileHandler fh = new FileHandler(); - ConsoleHandler ch = new ConsoleHandler(); - ch.setFormatter(new OhmFormatter()); - lg.addHandler(ch); + try (InputStream configFile = OhmLogger.class.getClassLoader().getResourceAsStream("config.properties")) { + if (configFile != null) { + ConsoleHandler ch = new ConsoleHandler(); + ch.setFormatter(new OhmFormatter()); + lg.setUseParentHandlers(false); + lg.getHandlers(); + lg.addHandler(ch); + + lg.setLevel(Level.parse(System.getProperty("log.level", "INFO"))); + + // Lese spezifische Level für einzelne Klassen aus der Properties-Datei +// Properties properties = new Properties(); +// properties.load(configFile); +// +// for (String key : properties.stringPropertyNames()) { +// if (key.startsWith("log.level.")) { +// String className = key.substring("log.level.".length()); +// Logger classLogger = Logger.getLogger(className); +// java.util.logging.Level classLogLevel = java.util.logging.Level.parse(properties.getProperty(key)); +// classLogger.setLevel(classLogLevel); +// } +// } + + } else { + System.err.println("Unable to find config.properties file. OhmLogger will use default settings."); + } + } catch (IOException | SecurityException e) { + System.err.println("Error configuring OhmLogger: " + e.getMessage()); + } + } } -class OhmFormatter extends SimpleFormatter +/** + * Klasse zum Setzen des Formates des Auszugebenden Log-Strings + * @author ahren + */ +class OhmFormatter extends Formatter { @Override public String format(LogRecord record) { - String logline = ""; + String logline = "| "; LocalDateTime ldt = LocalDateTime.now(); logline += ldt.toString(); - logline += ";" + record.getMessage(); - logline += "\n"; + logline += " | " + record.getLevel(); + logline += " | " + record.getSourceClassName(); + logline += " | " + record.getMessage(); + logline += " |\n"; return logline; } diff --git a/src/config.properties b/src/config.properties new file mode 100644 index 0000000..8b2d8f4 --- /dev/null +++ b/src/config.properties @@ -0,0 +1,5 @@ +log.level=INFO + +# Beispiel f\u00fcr verschiedene Level f\u00fcr unterschiedliche Pakete +# log.level.bandit.Zahlengenerator=FINE +# log.level.bandit.Zahlengenerator=WARNING