From 04dfafe19f0d3687d0f0b3e51d2d5bf3d19b58bf Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Wed, 07 Mar 2007 23:38:55 +0000
Subject: [PATCH] Enable AspectJ weaving for the new debug logging framework: - This commit does not allow for configuring the debug logger over protocol. It can only be configured on server startup using properties. - The settings specified during startup will remain in effect for the duration of the server. - All messages are printed to standard out. - Weaving could be turned off with the -DDEBUG_BUILD=false property when building the server. - By default, the debug logger is off on server startup. It could be enabled by using the -Dorg.opends.server.debug.enabled=true. - Debug targets may be defined with the -Dorg.opends.server.debug.target property. The syntax of this property can be found on the opends.dev.java.net documentation section. - Debug logging is turned on by default on unit tests and printed on test failure. - Default debug target for unit tests could be changed by using the -Dorg.opends.test.debug.target property.
---
opends/src/server/org/opends/server/loggers/debug/TraceSettings.java | 145 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 145 insertions(+), 0 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 2ea1daa..4cb7f86 100644
--- a/opends/src/server/org/opends/server/loggers/debug/TraceSettings.java
+++ b/opends/src/server/org/opends/server/loggers/debug/TraceSettings.java
@@ -28,10 +28,12 @@
package org.opends.server.loggers.debug;
import org.opends.server.types.DebugLogLevel;
+import org.opends.server.types.DebugLogCategory;
import org.opends.server.loggers.LogLevel;
import org.opends.server.loggers.LogCategory;
import java.util.Set;
+import java.util.HashSet;
/**
* This class encapsulates the trace settings in effect at a given traceing
@@ -43,6 +45,13 @@
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";
+
final LogLevel level;
final Set<LogCategory> includeCategories;
@@ -115,4 +124,140 @@
this.stackDepth = stackDepth;
this.includeCause = includeCause;
}
+
+ /**
+ * Parse trace settings from the string representation.
+ *
+ * @param value the trace settings string to be parsed.
+ * @return the trace settings parsed from the string.
+ */
+ protected static TraceSettings parseTraceSettings(String value)
+ {
+ TraceSettings settings = null;
+ if(value != null)
+ {
+ //Touch DebugLogLevel and DebugLogCategory so they are statically
+ //initialized or parse will not see all the levels/categories.
+ LogLevel level = DebugLogLevel.ERROR;
+ LogCategory categoryStub = DebugLogCategory.MESSAGE;
+
+ Set<LogCategory> includeCategories = null;
+ boolean noArgs = false;
+ boolean noRetVal = false;
+ int stackDepth = 0;
+ boolean includeCause = false;
+
+ String[] keywords = value.split(",");
+
+ for(String keyword : keywords)
+ {
+ //See if stack dump keyword is included
+ if(keyword.startsWith(STACK_DUMP_KEYWORD))
+ {
+ //See if a stack depth is included
+ if(keyword.length() == STACK_DUMP_KEYWORD.length())
+ {
+ stackDepth = DebugStackTraceFormatter.COMPLETE_STACK;
+ }
+ else
+ {
+ int depthStart= keyword.indexOf("=", STACK_DUMP_KEYWORD.length());
+ if (depthStart == STACK_DUMP_KEYWORD.length())
+ {
+ try
+ {
+ stackDepth = Integer.valueOf(keyword.substring(depthStart+1));
+ }
+ catch(NumberFormatException nfe)
+ {
+ System.err.println("The keyword " + STACK_DUMP_KEYWORD +
+ " contains an invalid depth value. The complete stack " +
+ "will be included.");
+ }
+ }
+ }
+ }
+ //See if to include cause in exception messages.
+ else if(keyword.equals(INCLUDE_CAUSE_KEYWORD))
+ {
+ includeCause = true;
+ }
+ //See if to supress method arguments.
+ else if(keyword.equals(SUPPRESS_ARG_KEYWORD))
+ {
+ noArgs = true;
+ }
+ //See if to supress return values.
+ else if(keyword.equals(SUPPRESS_RETVAL_KEYWORD))
+ {
+ noRetVal = true;
+ }
+ else if(keyword.startsWith(INCLUDE_CATEGORY_KEYWORD))
+ {
+ int categoryStart =
+ keyword.indexOf("=", INCLUDE_CATEGORY_KEYWORD.length());
+
+ if(keyword.length() == INCLUDE_CATEGORY_KEYWORD.length() ||
+ categoryStart != INCLUDE_CATEGORY_KEYWORD.length())
+ {
+ System.err.println("The keyword " + INCLUDE_CATEGORY_KEYWORD +
+ " does not contain an equal sign to define the set of " +
+ "categories to include. All categories will be included.");
+ }
+ else
+ {
+ String[] categories =
+ keyword.substring(categoryStart+1).split("[|]");
+ includeCategories = new HashSet<LogCategory>();
+ for(String category : categories)
+ {
+ try
+ {
+ includeCategories.add(DebugLogCategory.parse(category));
+ }
+ catch(IllegalArgumentException iae)
+ {
+ System.err.println("The keyword " + INCLUDE_CATEGORY_KEYWORD +
+ " contains an invalid debug log category: " +
+ iae.toString() + ". It will be ignored.");
+ }
+ }
+
+ }
+ }
+ else if(keyword.startsWith(LEVEL_KEYWORD))
+ {
+ int levelStart =
+ keyword.indexOf("=", LEVEL_KEYWORD.length());
+
+ if(keyword.length() == LEVEL_KEYWORD.length() ||
+ levelStart != LEVEL_KEYWORD.length())
+ {
+ System.err.println("The keyword " + LEVEL_KEYWORD +
+ " does not contain an equal sign to specify the log level. " +
+ "Default level of " + level.toString() + " will be used.");
+ }
+ else
+ {
+ try
+ {
+ level = LogLevel.parse(keyword.substring(levelStart+1));
+ }
+ catch(IllegalArgumentException iae)
+ {
+ System.err.println("The keyword " + LEVEL_KEYWORD +
+ " contains an invalid debug log level: " +
+ iae.toString() + ". Default level of " + level.toString() +
+ " will be used.");
+ }
+ }
+ }
+
+ }
+ settings = new TraceSettings(level, includeCategories, noArgs, noRetVal,
+ stackDepth, includeCause);
+ }
+
+ return settings;
+ }
}
--
Gitblit v1.10.0