mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

vharseko
31.33.2022 73fad0205ab9934b934ed8444bb0b4fe68573be9
FIX OpenDJ is not logging errors to logfile #128 (#235)

2 files modified
56 ■■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/quicksetup/TempLogFile.java 50 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/loggers/TextWriter.java 6 ●●●● patch | view | raw | blame | history
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();
    }
  }
opendj-server-legacy/src/main/java/org/opends/server/loggers/TextWriter.java
@@ -16,6 +16,7 @@
 */
package org.opends.server.loggers;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
@@ -139,7 +140,10 @@
    @Override
    public void shutdown()
    {
      // Should never close the system error stream.
        writer.close();
        try {
            stream.close();
        } catch (IOException e) {}
    }
    @Override