From 97684b8630ae46201dfef997caa8b0a966ee8f2d Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Fri, 14 Mar 2008 22:34:11 +0000
Subject: [PATCH] Fixed the debug logger so it is enabled by default (error log level) for all tools and for the server itself on startup. The user can now use the org.opends.server.debug.* property to configure the debugging behavior anytime where the logger configuration is not obtained from the config file. This is discovered when it was not possible to see debug output from the verify-index tool to determine why the db was corrupt.
---
opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java | 60 +----------
opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java | 21 ++++
opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java | 13 +
opendj-sdk/opends/src/server/org/opends/server/loggers/debug/DebugLogger.java | 28 +++++
opendj-sdk/opends/src/server/org/opends/server/types/DirectoryEnvironmentConfig.java | 154 ------------------------------
5 files changed, 64 insertions(+), 212 deletions(-)
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java b/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
index 51f9b3c..ad15df0 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/DirectoryServer.java
@@ -69,9 +69,6 @@
import org.opends.server.api.SynchronizationProvider;
import org.opends.server.api.TrustManagerProvider;
import org.opends.server.api.WorkQueue;
-import org.opends.server.api.AccessLogPublisher;
-import org.opends.server.api.ErrorLogPublisher;
-import org.opends.server.api.DebugLogPublisher;
import org.opends.server.api.AccessControlHandler;
import org.opends.server.api.plugin.PluginType;
import org.opends.server.api.plugin.StartupPluginResult;
@@ -87,13 +84,10 @@
import org.opends.server.extensions.JMXAlertHandler;
import static org.opends.server.loggers.AccessLogger.*;
import static org.opends.server.loggers.ErrorLogger.*;
-import org.opends.server.loggers.RetentionPolicy;
-import org.opends.server.loggers.RotationPolicy;
-import org.opends.server.loggers.TextErrorLogPublisher;
-import org.opends.server.loggers.TextWriter;
+import org.opends.server.loggers.*;
import static org.opends.server.loggers.debug.DebugLogger.*;
import org.opends.server.loggers.debug.DebugTracer;
-import org.opends.server.loggers.debug.TextDebugLogPublisher;
+import org.opends.server.loggers.debug.DebugLogger;
import org.opends.messages.MessageDescriptor;
import org.opends.messages.Message;
@@ -1001,27 +995,6 @@
Thread.setDefaultUncaughtExceptionHandler(this);
- // Install default debug and error loggers for use until enough of the
- // configuration has been read to allow the real loggers to be installed.
- removeAllAccessLogPublishers();
- for (AccessLogPublisher p : environmentConfig.getAccessLoggers())
- {
- addAccessLogPublisher(p);
- }
-
- removeAllErrorLogPublishers();
- for (ErrorLogPublisher p : environmentConfig.getErrorLoggers())
- {
- addErrorLogPublisher(p);
- }
-
- removeAllDebugLogPublishers();
- for (DebugLogPublisher p : environmentConfig.getDebugLoggers())
- {
- addDebugLogPublisher(p);
- }
-
-
// Create the MBean server that we will use for JMX interaction.
initializeJMX();
@@ -1322,12 +1295,12 @@
retentionPolicyConfigManager = new LogRetentionPolicyConfigManager();
retentionPolicyConfigManager.initializeLogRetentionPolicyConfig();
+
// Initialize the server loggers.
loggerConfigManager = new LoggerConfigManager();
loggerConfigManager.initializeLoggerConfig();
-
// Initialize the server alert handlers.
initializeAlertHandlers();
@@ -1481,17 +1454,9 @@
sendAlertNotification(this, ALERT_TYPE_SERVER_STARTED, message);
- for(DebugLogPublisher startupDebugLogPublisher :
- environmentConfig.getDebugLoggers())
- {
- removeDebugLogPublisher(startupDebugLogPublisher);
- }
-
- for(ErrorLogPublisher startupErrorLogPublisher :
- environmentConfig.getErrorLoggers())
- {
- removeErrorLogPublisher(startupErrorLogPublisher);
- }
+ // Remove default loggers
+ ErrorLogger.removeFirstErrorLogPublisher();
+ DebugLogger.removeFirstDebugLogPublisher();
// Force the root connection to be initialized.
InternalClientConnection.getRootConnection();
@@ -9525,8 +9490,6 @@
// Create an environment configuration for the server and populate a number
// of appropriate properties.
- TextErrorLogPublisher startupErrorLogPublisher = null;
- TextDebugLogPublisher startupDebugLogPublisher = null;
DirectoryEnvironmentConfig environmentConfig =
new DirectoryEnvironmentConfig();
try
@@ -9537,17 +9500,6 @@
configFile.getValue());
environmentConfig.setProperty(PROPERTY_USE_LAST_KNOWN_GOOD_CONFIG,
String.valueOf(useLastKnownGoodConfig.isPresent()));
-
-
- startupErrorLogPublisher =
- TextErrorLogPublisher.getStartupTextErrorPublisher(
- new TextWriter.STDOUT());
- environmentConfig.addErrorLogger(startupErrorLogPublisher);
-
- startupDebugLogPublisher =
- TextDebugLogPublisher.getStartupTextDebugPublisher(
- new TextWriter.STDOUT());
- environmentConfig.addDebugLogger(startupDebugLogPublisher);
}
catch (Exception e)
{
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java
index deede00..7082c56 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/ErrorLogger.java
@@ -76,6 +76,14 @@
// The singleton instance of this class for configuration purposes.
private static final ErrorLogger instance = new ErrorLogger();
+ static
+ {
+ // Add the default publisher to stdout.
+ addErrorLogPublisher(
+ TextErrorLogPublisher.getStartupTextErrorPublisher(
+ new TextWriter.STDOUT()));
+ }
+
/**
* Retrieve the singleton instance of this class.
*
@@ -130,6 +138,19 @@
}
/**
+ * Removes first error log publisher from the logger.
+ */
+ public synchronized static void removeFirstErrorLogPublisher()
+ {
+ if(!errorPublishers.isEmpty())
+ {
+ ErrorLogPublisher publisher = errorPublishers.remove(0);
+
+ publisher.close();
+ }
+ }
+
+ /**
* Initializes all the error log publishers.
*
* @param configs The error log publisher configurations.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/debug/DebugLogger.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/debug/DebugLogger.java
index 37455d6..37be564 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/debug/DebugLogger.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/debug/DebugLogger.java
@@ -93,6 +93,14 @@
// The singleton instance of this class for configuration purposes.
static final DebugLogger instance = new DebugLogger();
+ static
+ {
+ // Add the default publisher to stdout.
+ addDebugLogPublisher(
+ TextDebugLogPublisher.getStartupTextDebugPublisher(
+ new TextWriter.STDOUT()));
+ }
+
/**
* Add an debug log publisher to the debug logger.
*
@@ -152,6 +160,26 @@
}
/**
+ * Removes first debug log publisher from the logger.
+ */
+ public synchronized static void removeFirstDebugLogPublisher()
+ {
+ if(!debugPublishers.isEmpty())
+ {
+ DebugLogPublisher publisher = debugPublishers.remove(0);
+
+ publisher.close();
+ }
+
+ updateTracerSettings();
+
+ if(debugPublishers.isEmpty())
+ {
+ enabled = false;
+ }
+ }
+
+ /**
* Initializes all the debug log publishers.
*
* @param configs The debug log publisher configurations.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/types/DirectoryEnvironmentConfig.java b/opendj-sdk/opends/src/server/org/opends/server/types/DirectoryEnvironmentConfig.java
index a127ebe..dabd2d4 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/types/DirectoryEnvironmentConfig.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/types/DirectoryEnvironmentConfig.java
@@ -29,17 +29,12 @@
import java.io.File;
-import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Properties;
-import org.opends.server.api.AccessLogPublisher;
import org.opends.server.api.ConfigHandler;
-import org.opends.server.api.DebugLogPublisher;
-import org.opends.server.api.ErrorLogPublisher;
import org.opends.server.core.DirectoryServer;
import org.opends.server.extensions.ConfigFileHandler;
@@ -63,18 +58,6 @@
mayInvoke=true)
public final class DirectoryEnvironmentConfig
{
- // The set of access loggers that should be put in place before the
- // server is started.
- private final ArrayList<AccessLogPublisher> accessLoggers;
-
- // The set of debug loggers that should be put in place before the
- // server is started.
- private final ArrayList<DebugLogPublisher> debugLoggers;
-
- // The set of error loggers that should be put in place before the
- // server is started.
- private final ArrayList<ErrorLogPublisher> errorLoggers;
-
// The set of properties for the environment config.
private final HashMap<String,String> configProperties;
@@ -112,10 +95,6 @@
String.valueOf(properties.get(o)));
}
}
-
- accessLoggers = new ArrayList<AccessLogPublisher>();
- debugLoggers = new ArrayList<DebugLogPublisher>();
- errorLoggers = new ArrayList<ErrorLogPublisher>();
}
@@ -138,10 +117,6 @@
{
configProperties = new HashMap<String,String>(properties);
}
-
- accessLoggers = new ArrayList<AccessLogPublisher>();
- debugLoggers = new ArrayList<DebugLogPublisher>();
- errorLoggers = new ArrayList<ErrorLogPublisher>();
}
@@ -1329,134 +1304,5 @@
}
}
}
-
-
-
- /**
- * Retrieves the list of access loggers that should be enabled in
- * the server during the startup process. Note that these loggers
- * will not be automatically disabled when startup is complete, so
- * if they are no longer needed then they should be manually removed
- * from the server using the
- * {@code AccessLogger.removeAccessLogPublisher} method.
- *
- * @return The list of access loggers that should be enabled in the
- * server during the startup process.
- */
- public List<AccessLogPublisher> getAccessLoggers()
- {
- return accessLoggers;
- }
-
-
-
- /**
- * Adds the provided access logger to the set of loggers that should
- * be enabled in the server during the startup process.
- *
- * @param accessLogger The access logger that should be added to
- * the set of loggers enabled in the server
- * during the startup process.
- *
- * @throws InitializationException If the Directory Server is
- * already running.
- */
- public void addAccessLogger(AccessLogPublisher accessLogger)
- throws InitializationException
- {
- if (DirectoryServer.isRunning())
- {
- throw new InitializationException(
- ERR_DIRCFG_SERVER_ALREADY_RUNNING.get());
- }
-
- accessLoggers.add(accessLogger);
- }
-
-
-
- /**
- * Retrieves the list of error loggers that should be enabled in
- * the server during the startup process. Note that these loggers
- * will not be automatically disabled when startup is complete, so
- * if they are no longer needed then they should be manually removed
- * from the server using the
- * {@code ErrorLogger.removeErrorLogPublisher} method.
- *
- * @return The list of error loggers that should be enabled in the
- * server during the startup process.
- */
- public List<ErrorLogPublisher> getErrorLoggers()
- {
- return errorLoggers;
- }
-
-
-
- /**
- * Adds the provided error logger to the set of loggers that should
- * be enabled in the server during the startup process.
- *
- * @param errorLogger The error logger that should be added to the
- * set of loggers enabled in the server during
- * the startup process.
- *
- * @throws InitializationException If the Directory Server is
- * already running.
- */
- public void addErrorLogger(ErrorLogPublisher errorLogger)
- throws InitializationException
- {
- if (DirectoryServer.isRunning())
- {
- throw new InitializationException(
- ERR_DIRCFG_SERVER_ALREADY_RUNNING.get());
- }
-
- errorLoggers.add(errorLogger);
- }
-
-
-
- /**
- * Retrieves the list of debug loggers that should be enabled in
- * the server during the startup process. Note that these loggers
- * will not be automatically disabled when startup is complete, so
- * if they are no longer needed then they should be manually removed
- * from the server using the
- * {@code DebugLogger.removeDebugLogPublisher} method.
- *
- * @return The list of debug loggers that should be enabled in the
- * server during the startup process.
- */
- public List<DebugLogPublisher> getDebugLoggers()
- {
- return debugLoggers;
- }
-
-
-
- /**
- * Adds the provided debug logger to the set of loggers that should
- * be enabled in the server during the startup process.
- *
- * @param debugLogger The debug logger that should be added to
- * the set of loggers enabled in the server
- * during the startup process.
- *
- * @throws InitializationException If the Directory Server is
- * already running.
- */
- public void addDebugLogger(DebugLogPublisher debugLogger)
- throws InitializationException
- {
- if (DirectoryServer.isRunning())
- {
- throw new InitializationException(
- ERR_DIRCFG_SERVER_ALREADY_RUNNING.get());
- }
-
- debugLoggers.add(debugLogger);
- }
}
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
index 90a6a58..d51fb48 100644
--- a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/TestCaseUtils.java
@@ -81,7 +81,10 @@
import org.opends.server.extensions.ConfigFileHandler;
import org.opends.server.loggers.TextAccessLogPublisher;
import org.opends.server.loggers.TextErrorLogPublisher;
+import org.opends.server.loggers.AccessLogger;
+import org.opends.server.loggers.ErrorLogger;
import org.opends.server.loggers.debug.TextDebugLogPublisher;
+import org.opends.server.loggers.debug.DebugLogger;
import org.opends.server.plugins.InvocationCounterPlugin;
import org.opends.server.protocols.asn1.ASN1OctetString;
import org.opends.server.protocols.asn1.ASN1Reader;
@@ -366,15 +369,18 @@
config.setConfigClass(ConfigFileHandler.class);
config.setConfigFile(new File(testConfigDir, "config.ldif"));
- config.addAccessLogger(
+ AccessLogger.removeAllAccessLogPublishers();
+ AccessLogger.addAccessLogPublisher(
TextAccessLogPublisher.getStartupTextAccessPublisher(
ACCESS_TEXT_WRITER, false));
- config.addErrorLogger(
+ ErrorLogger.removeAllErrorLogPublishers();
+ ErrorLogger.addErrorLogPublisher(
TextErrorLogPublisher.getStartupTextErrorPublisher(
ERROR_TEXT_WRITER));
- config.addDebugLogger(
+ DebugLogger.removeAllDebugLogPublishers();
+ DebugLogger.addDebugLogPublisher(
TextDebugLogPublisher.getStartupTextDebugPublisher(
DEBUG_TEXT_WRITER));
@@ -1624,4 +1630,3 @@
return buffer.toString();
}
}
-
--
Gitblit v1.10.0