You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

OhmLogger.java 3.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package ChatProgramm.util;
  2. /*
  3. * Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
  4. * Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
  5. */
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.time.LocalDateTime;
  9. import java.util.Map;
  10. import java.util.Properties;
  11. import java.util.Set;
  12. //import java.util.Properties;
  13. import java.util.logging.*;
  14. /**
  15. * Klasse zur eigens konfigurierten Log-Ausgabe in der Console
  16. * @author ahrens
  17. */
  18. public class OhmLogger
  19. {
  20. private static final String LOGGER_NAME = "OhmLogger";
  21. private static Logger lg = null;
  22. /**
  23. * privater Konstrukter -> Singleton
  24. */
  25. private OhmLogger()
  26. {
  27. }
  28. /**
  29. * Public Method zum Erstellen des Loggers und zum Aufruf der Methode
  30. * zum Initialisieren
  31. * @return Referenz auf Logger
  32. */
  33. public static Logger getLogger()
  34. {
  35. if (lg == null)
  36. {
  37. lg = Logger.getLogger(LOGGER_NAME);
  38. initLogger();
  39. }
  40. return lg;
  41. }
  42. /**
  43. * Methode zum Initialisieren, Suchen der Konfigurationsdatei, Anlegen eines
  44. * neuen Console Handlers, Löschen der bisherigen Standard Handler und
  45. * Einfügen des eigenen Handler, Setzen des Levels, je nach Properties
  46. */
  47. private static void initLogger()
  48. {
  49. try (InputStream configFile = OhmLogger.class.getClassLoader().getResourceAsStream("config.properties")) {
  50. if (configFile != null) {
  51. Properties properties = new Properties();
  52. properties.load(configFile);
  53. java.util.logging.Level classLogLevel = java.util.logging.Level.parse(properties.getProperty("log.level"));
  54. ConsoleHandler ch = new ConsoleHandler();
  55. ch.setFormatter(new OhmFormatter());
  56. lg.setUseParentHandlers(false);
  57. lg.getHandlers();
  58. lg.addHandler(ch);
  59. lg.setLevel(classLogLevel);
  60. String logDirectory = properties.getProperty("log.directory");
  61. String logFileName = properties.getProperty("log.filename");
  62. FileHandler fileHandler = new FileHandler(logDirectory + "/" + logFileName, true);
  63. fileHandler.setFormatter(new OhmFormatter());
  64. lg.addHandler(fileHandler);
  65. } else {
  66. System.err.println("Unable to find config.properties file. OhmLogger will use default settings.");
  67. }
  68. } catch (IOException | SecurityException e) {
  69. System.err.println("Error configuring OhmLogger: " + e.getMessage());
  70. }
  71. }
  72. }
  73. /**
  74. * Klasse zum Setzen des Formates des Auszugebenden Log-Strings
  75. * @author ahren
  76. */
  77. class OhmFormatter extends Formatter
  78. {
  79. @Override
  80. public String format(LogRecord record)
  81. {
  82. String logline = "| ";
  83. LocalDateTime ldt = LocalDateTime.now();
  84. logline += ldt.toString();
  85. logline += " | " + record.getLevel();
  86. logline += " | " + record.getSourceClassName();
  87. logline += " | " + record.getMessage();
  88. logline += " |\n";
  89. return logline;
  90. }
  91. }