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

Gaetan Boismal
11.09.2016 530d5906228862ee2d8a26e451cac47b287073f0
OPENDJ-2765 Make upgrade less verbose

* OpenDJ Tools now use the FINE jul level to log.
If verbose argument is present, LDAPConnection level is ALL.
This change allow us to hide java.util.Logging.Level import in
JDKLogging, thus we do not have mix between jul Level and DJ log Level
in source code.

* Make the JDKLogging.OpenDJHandler out and err streams configurable.
Use the provided upgrade log file stream as both out and err stream for
rebuild index.
5 files modified
74 ■■■■ changed files
opendj-server-legacy/src/main/java/org/opends/server/loggers/JDKLogging.java 59 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPConnection.java 5 ●●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java 4 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java 3 ●●●● patch | view | raw | blame | history
opendj-server-legacy/src/main/java/org/opends/server/loggers/JDKLogging.java
@@ -11,10 +11,11 @@
 * Header, with the fields enclosed by brackets [] replaced by your own identifying
 * information: "Portions Copyright [year] [name of copyright owner]".
 *
 * Copyright 2014-2015 ForgeRock AS.
 * Copyright 2014-2016 ForgeRock AS.
 */
package org.opends.server.loggers;
import java.io.PrintStream;
import java.util.logging.ErrorManager;
import java.util.logging.Formatter;
import java.util.logging.Handler;
@@ -43,14 +44,53 @@
  /**
   * Enable JDK logging to stderr at provided level for OpenDJ classes.
   * <p>
   * Error and warning messages will be printed on stderr, other messages will be printed on stdout.
   */
  public static void enableVerboseConsoleLoggingForOpenDJ()
  {
    enableConsoleLoggingForOpenDJ(Level.ALL, System.out, System.err);
  }
  /**
   * Enable JDK logging for OpenDJ tool.
   * <p>
   * Error and warning messages will be printed on stderr, other messages will be printed on stdout.
   * This method should only be used by external tool classes.
   */
  public static void enableConsoleLoggingForOpenDJTool()
  {
    enableConsoleLoggingForOpenDJ(Level.FINE, System.out, System.err);
  }
  /**
   * Enable JDK logging in provided {@link PrintStream} for OpenDJ tool.
   * <p>
   * All messages will be printed on the provided {@link PrintStream}.
   * This method should only be used by external tool classes.
   *
   * @param stream
   *          The stream to use to print messages.
   */
  public static void enableLoggingForOpenDJTool(final PrintStream stream)
  {
    enableConsoleLoggingForOpenDJ(Level.FINE, stream, stream);
  }
  /**
   * Enable JDK logging at provided {@link Level} in provided {@link PrintStream} for OpenDJ classes.
   *
   * @param level
   *          The level to log.
   * @param out
   *          The stream to use to print messages from {@link Level#FINEST} and {@link Level#INFO} included.
   * @param err
   *          The stream to use to print {@link Level#SEVERE} and {@link Level#WARNING} messages.
   */
  public static void enableConsoleLoggingForOpenDJ(Level level)
  private static void enableConsoleLoggingForOpenDJ(final Level level, final PrintStream out, final PrintStream err)
  {
    LogManager.getLogManager().reset();
    Handler handler = new OpenDJHandler();
    Handler handler = new OpenDJHandler(out, err);
    handler.setFormatter(getFormatter());
    handler.setLevel(level);
    for (String loggingRoot : LOGGING_ROOTS)
@@ -66,6 +106,15 @@
   */
  private static final class OpenDJHandler extends Handler
  {
    private final PrintStream out;
    private final PrintStream err;
    private OpenDJHandler(final PrintStream out, final PrintStream err)
    {
      this.out = out;
      this.err = err;
    }
    @Override
    public void publish(LogRecord record)
    {
@@ -79,11 +128,11 @@
        String message = getFormatter().format(record);
        if (record.getLevel().intValue() >= Level.WARNING.intValue())
        {
          System.err.write(message.getBytes());
          err.write(message.getBytes());
        }
        else
        {
          System.out.write(message.getBytes());
          out.write(message.getBytes());
        }
      }
      catch (Exception exception)
opendj-server-legacy/src/main/java/org/opends/server/tools/LDAPConnection.java
@@ -12,7 +12,7 @@
 * information: "Portions Copyright [year] [name of copyright owner]".
 *
 * Copyright 2009-2010 Sun Microsystems, Inc.
 * Portions Copyright 2013-2015 ForgeRock AS.
 * Portions Copyright 2013-2016 ForgeRock AS.
 */
package org.opends.server.tools;
import java.io.IOException;
@@ -24,7 +24,6 @@
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import org.forgerock.i18n.LocalizableMessage;
import org.opends.server.controls.AuthorizationIdentityResponseControl;
@@ -174,7 +173,7 @@
    if (connectionOptions.isVerbose())
    {
      JDKLogging.enableConsoleLoggingForOpenDJ(Level.ALL);
      JDKLogging.enableVerboseConsoleLoggingForOpenDJ();
    }
    else
    {
opendj-server-legacy/src/main/java/org/opends/server/tools/RebuildIndex.java
@@ -28,7 +28,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.logging.Level;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.i18n.LocalizableMessageDescriptor.Arg1;
@@ -134,7 +133,7 @@
  {
    final PrintStream out = NullOutputStream.wrapOrNullStream(outStream);
    final PrintStream err = NullOutputStream.wrapOrNullStream(errStream);
    JDKLogging.enableConsoleLoggingForOpenDJ(Level.FINE);
    JDKLogging.enableConsoleLoggingForOpenDJTool();
    // Initialize all the command-line argument types and register them with the
    // parser.
@@ -648,6 +647,7 @@
  public int rebuildIndexesWithinMultipleBackends(
      final boolean initializeServer, final PrintStream out, final Collection<String> args)
  {
    JDKLogging.enableLoggingForOpenDJTool(out);
    try
    {
      setErrorAndDebugLogPublisher(out, out);
opendj-server-legacy/src/main/java/org/opends/server/tools/VerifyIndex.java
@@ -27,7 +27,6 @@
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.config.server.ConfigException;
@@ -92,7 +91,7 @@
                                    OutputStream errStream)
  {
    PrintStream err = NullOutputStream.wrapOrNullStream(errStream);
    JDKLogging.enableConsoleLoggingForOpenDJ(Level.FINE);
    JDKLogging.enableConsoleLoggingForOpenDJTool();
    // Define the command-line arguments that may be used with this program.
    StringArgument  configClass             = null;
opendj-server-legacy/src/main/java/org/opends/server/tools/tasks/TaskTool.java
@@ -29,7 +29,6 @@
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Level;
import org.forgerock.i18n.LocalizableMessage;
import org.forgerock.opendj.ldap.DecodeException;
@@ -178,7 +177,7 @@
    else
    {
      // server is offline => output logs to the console
      JDKLogging.enableConsoleLoggingForOpenDJ(Level.FINE);
      JDKLogging.enableConsoleLoggingForOpenDJTool();
      taskScheduleArgs.validateArgsIfOffline();
    }
  }