From d755882f59202fe62b2ad5a141b3c044c1898aa6 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Thu, 03 May 2007 21:55:23 +0000
Subject: [PATCH] Major changes made to the logging framework. It should resolve the following issues:
---
opends/src/server/org/opends/server/loggers/debug/TraceSettings.java | 141 ++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 128 insertions(+), 13 deletions(-)
diff --git a/opends/src/server/org/opends/server/loggers/debug/TraceSettings.java b/opends/src/server/org/opends/server/loggers/debug/TraceSettings.java
index 4cb7f86..dad93de 100644
--- a/opends/src/server/org/opends/server/loggers/debug/TraceSettings.java
+++ b/opends/src/server/org/opends/server/loggers/debug/TraceSettings.java
@@ -29,36 +29,68 @@
import org.opends.server.types.DebugLogLevel;
import org.opends.server.types.DebugLogCategory;
+import org.opends.server.types.ConfigChangeResult;
+import org.opends.server.types.ResultCode;
import org.opends.server.loggers.LogLevel;
import org.opends.server.loggers.LogCategory;
+import org.opends.server.admin.server.ConfigurationChangeListener;
+import org.opends.server.admin.std.meta.DebugTargetCfgDefn;
+import org.opends.server.admin.std.server.DebugTargetCfg;
import java.util.Set;
import java.util.HashSet;
+import java.util.ArrayList;
+import java.util.List;
/**
* This class encapsulates the trace settings in effect at a given traceing
* scope.
*/
public class TraceSettings
+ implements ConfigurationChangeListener<DebugTargetCfg>
{
/** A TraceSettings object representing a fully disabled trace state. */
- static final TraceSettings DISABLED =
+ public static final TraceSettings DISABLED =
new TraceSettings(DebugLogLevel.DISABLED);
- static final String STACK_DUMP_KEYWORD = "stack";
- static final String INCLUDE_CAUSE_KEYWORD = "cause";
- static final String SUPPRESS_ARG_KEYWORD = "noargs";
- static final String SUPPRESS_RETVAL_KEYWORD = "noretval";
- static final String INCLUDE_CATEGORY_KEYWORD = "category";
- static final String LEVEL_KEYWORD = "level";
+ private static final String STACK_DUMP_KEYWORD = "stack";
+ private static final String INCLUDE_CAUSE_KEYWORD = "cause";
+ private static final String SUPPRESS_ARG_KEYWORD = "noargs";
+ private static final String SUPPRESS_RETVAL_KEYWORD = "noretval";
+ private static final String INCLUDE_CATEGORY_KEYWORD = "category";
+ private static final String LEVEL_KEYWORD = "level";
- final LogLevel level;
- final Set<LogCategory> includeCategories;
+ /**
+ * The log level of this setting.
+ */
+ LogLevel level;
- final boolean noArgs;
- final boolean noRetVal;
- final int stackDepth;
- final boolean includeCause;
+ /**
+ * The log categories for this setting.
+ */
+ Set<LogCategory> includeCategories;
+
+ /**
+ * Indicates if method arguments should be logged.
+ */
+ boolean noArgs;
+
+ /**
+ * Indicates if method return values should be logged.
+ */
+ boolean noRetVal;
+
+ /**
+ * The level of stack frames to include.
+ */
+ int stackDepth;
+
+ /**
+ * Indicates if the cause exception is included in exception messages.
+ */
+ boolean includeCause;
+
+ private DebugTargetCfg currentConfig;
/**
* Construct new trace settings at the specified log level.
@@ -126,6 +158,89 @@
}
/**
+ * Construct a new trace settings from the provided configuration.
+ *
+ * @param config The debug target configuration that contains the information
+ * to use to initialize this trace setting.
+ */
+ public TraceSettings(DebugTargetCfg config)
+ {
+ this.level =
+ DebugLogLevel.parse(config.getDebugLevel().name());
+
+ Set<LogCategory> logCategories = null;
+ if(!config.getDebugCategory().isEmpty())
+ {
+ logCategories =
+ new HashSet<LogCategory>(config.getDebugCategory().size());
+ for(DebugTargetCfgDefn.DebugCategory category :
+ config.getDebugCategory())
+ {
+ logCategories.add(DebugLogCategory.parse(category.name()));
+ }
+ }
+
+ this.includeCategories = logCategories;
+ this.noArgs = config.isOmitMethodEntryArguments();
+ this.noRetVal = config.isOmitMethodReturnValue();
+ this.stackDepth = config.getThrowableStackFrames();
+ this.includeCause = config.isIncludeThrowableCause();
+
+ currentConfig = config;
+ config.addChangeListener(this);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public boolean isConfigurationChangeAcceptable(DebugTargetCfg config,
+ List<String> unacceptableReasons)
+ {
+ // This should alwas be acceptable. We are assuing that the scope for this
+ // trace setting is the same sine its part of the DN.
+ return true;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public ConfigChangeResult applyConfigurationChange(DebugTargetCfg config)
+ {
+ // Default result code.
+ ResultCode resultCode = ResultCode.SUCCESS;
+ boolean adminActionRequired = false;
+ ArrayList<String> messages = new ArrayList<String>();
+
+ // We can assume that the target scope did not change since its the
+ // naming attribute. Changing it would result in a modify DN.
+
+ this.level =
+ DebugLogLevel.parse(config.getDebugLevel().name());
+
+ Set<LogCategory> logCategories = null;
+ if(!config.getDebugCategory().isEmpty())
+ {
+ logCategories =
+ new HashSet<LogCategory>(config.getDebugCategory().size());
+ for(DebugTargetCfgDefn.DebugCategory category :
+ config.getDebugCategory())
+ {
+ logCategories.add(DebugLogCategory.parse(category.name()));
+ }
+ }
+
+ this.includeCategories = logCategories;
+ this.noArgs = config.isOmitMethodEntryArguments();
+ this.noRetVal = config.isOmitMethodReturnValue();
+ this.stackDepth = config.getThrowableStackFrames();
+ this.includeCause = config.isIncludeThrowableCause();
+
+ this.currentConfig = config;
+
+ return new ConfigChangeResult(resultCode, adminActionRequired, messages);
+ }
+
+ /**
* Parse trace settings from the string representation.
*
* @param value the trace settings string to be parsed.
--
Gitblit v1.10.0