From 73fad0205ab9934b934ed8444bb0b4fe68573be9 Mon Sep 17 00:00:00 2001
From: vharseko <vharseko@3a-systems.ru>
Date: Tue, 31 May 2022 14:33:37 +0000
Subject: [PATCH] FIX OpenDJ is not logging errors to logfile #128 (#235)

---
 opendj-server-legacy/src/main/java/org/opends/quicksetup/TempLogFile.java |   50 ++++++++++++++++++++++++++------------------------
 1 files changed, 26 insertions(+), 24 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/quicksetup/TempLogFile.java b/opendj-server-legacy/src/main/java/org/opends/quicksetup/TempLogFile.java
index 766d4ee..e17abd2 100644
--- a/opendj-server-legacy/src/main/java/org/opends/quicksetup/TempLogFile.java
+++ b/opendj-server-legacy/src/main/java/org/opends/quicksetup/TempLogFile.java
@@ -17,22 +17,25 @@
 package org.opends.quicksetup;
 
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.IOException;
-import java.util.logging.FileHandler;
-import java.util.logging.Logger;
 import java.util.Date;
 import java.text.DateFormat;
 
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
-import org.opends.server.loggers.JDKLogging;
+import org.opends.server.loggers.DebugLogPublisher;
+import org.opends.server.loggers.DebugLogger;
+import org.opends.server.loggers.ErrorLogPublisher;
+import org.opends.server.loggers.ErrorLogger;
+import org.opends.server.loggers.TextErrorLogPublisher;
+import org.opends.server.loggers.TextWriter;
 
 /** This class represents a temporary log file which should be usually deleted if linked operation succeeded. */
 public class TempLogFile
 {
   private static final LocalizedLogger localizedLogger = LocalizedLogger.getLoggerForThisClass();
 
-  private static final String OPENDS_LOGGER_NAME = "org.opends";
 
   /**
    * Creates a new temporary log file.
@@ -57,35 +60,32 @@
     }
   }
 
-  /** Prevents messages written to loggers from appearing in the console output. */
-  private static void disableConsoleLogging(final Logger logger)
-  {
-    if (!"true".equalsIgnoreCase(System.getenv("OPENDJ_LOG_TO_STDOUT")))
-    {
-      logger.setUseParentHandlers(false);
-    }
-  }
-
   private final File logFile;
-  private final FileHandler fileHandler;
 
   private TempLogFile()
   {
     this.logFile = null;
-    this.fileHandler = null;
+    this.writer=null;
   }
 
+  final TextWriter writer;
+  
   private TempLogFile(final File file) throws IOException
   {
     logFile = file;
-    fileHandler = new FileHandler(logFile.getCanonicalPath());
-    fileHandler.setFormatter(JDKLogging.getFormatter());
-    final Logger parentLogger = Logger.getLogger(OPENDS_LOGGER_NAME);
-    parentLogger.addHandler(fileHandler);
-    disableConsoleLogging(parentLogger);
-    final Logger logger = Logger.getLogger(getClass().getPackage().getName());
-    logger.info("QuickSetup application launched " + DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG)
-          .format(new Date()));
+    // Install the default loggers so the startup messages
+    // will be printed.
+     
+    if ("true".equalsIgnoreCase(System.getenv("OPENDJ_LOG_TO_STDOUT"))) {
+    	writer=new TextWriter.STDOUT(); 
+    }else {
+    	writer=new TextWriter.STREAM(new FileOutputStream(file));
+    }
+    ErrorLogPublisher startupErrorLogPublisher = TextErrorLogPublisher.getServerStartupTextErrorPublisher(writer);
+    ErrorLogger.getInstance().addLogPublisher(startupErrorLogPublisher);
+    DebugLogPublisher startupDebugLogPublisher = DebugLogger.getInstance().addPublisherIfRequired(writer);
+
+    localizedLogger.info(LocalizableMessage.raw("QuickSetup application launched " + DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG).format(new Date()), null));
   }
 
   /**
@@ -103,7 +103,9 @@
   {
     if (isEnabled())
     {
-      fileHandler.close();
+    	if (writer!=null) {
+    		writer.shutdown();
+    	}
       logFile.delete();
     }
   }

--
Gitblit v1.10.0