From 81d36161ce5367fa7aa9a5d99dc8b80eacfa7cdf Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Fri, 24 Jan 2014 14:43:46 +0000
Subject: [PATCH] Checkpoint commit for OPENDJ-1288 : Migrate I18n and logging support to i18n framework and SLF4J
---
opendj3-server-dev/src/server/org/opends/server/loggers/debug/DebugTracer.java | 663 +++++++------------------------------------------------
1 files changed, 85 insertions(+), 578 deletions(-)
diff --git a/opendj3-server-dev/src/server/org/opends/server/loggers/debug/DebugTracer.java b/opendj3-server-dev/src/server/org/opends/server/loggers/debug/DebugTracer.java
index 28b11c0..a3a309f 100644
--- a/opendj3-server-dev/src/server/org/opends/server/loggers/debug/DebugTracer.java
+++ b/opendj3-server-dev/src/server/org/opends/server/loggers/debug/DebugTracer.java
@@ -22,6 +22,7 @@
*
*
* Copyright 2006-2009 Sun Microsystems, Inc.
+ * Portions Copyright 2014 ForgeRock AS
*/
package org.opends.server.loggers.debug;
@@ -32,8 +33,6 @@
import org.opends.server.loggers.LogCategory;
import java.util.Map;
-import java.nio.ByteBuffer;
-
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.Transaction;
import com.sleepycat.je.DatabaseEntry;
@@ -70,22 +69,13 @@
* Construct a new DebugTracer object with cached settings obtained from
* the provided array of publishers.
*
+ * @param className The classname to use as category for logging.
* @param publishers The array of publishers to obtain the settings from.
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
- DebugTracer(DebugLogPublisher[] publishers)
+ DebugTracer(String className, DebugLogPublisher[] publishers)
{
- // Trim off the debug logging and non OpenDS frames.
- StackTraceElement callerFrame =
- getCallerFrame(Thread.currentThread().getStackTrace());
-
- // TODO: What if this is null or 0 length?
- if(callerFrame != null)
- {
- // The caller should be the first item on the stack.
- className = callerFrame.getClassName();
- }
-
+ this.className = className;
publisherSettings = new PublisherSettings[publishers.length];
// Get the settings from all publishers.
@@ -110,445 +100,6 @@
}
/**
- * Log an constructor execution event.
- *
- * @param level The level of the message being logged.
- * @param args The arguments passed to the constructor.
- */
- public void debugConstructor(LogLevel level, Object... args)
- {
- if(DebugLogger.debugEnabled())
- {
- StackTraceElement[] stackTrace = null;
- StackTraceElement[] filteredStackTrace = null;
- StackTraceElement callerFrame = null;
- for (PublisherSettings settings : publisherSettings)
- {
- TraceSettings activeSettings = settings.classSettings;
- Map<String, TraceSettings> methodSettings = settings.methodSettings;
-
- if (shouldLog(level, DebugLogCategory.CONSTRUCTOR,
- activeSettings) || methodSettings != null)
- {
- if(stackTrace == null)
- {
- stackTrace = Thread.currentThread().getStackTrace();
- }
- if (callerFrame == null)
- {
- callerFrame = getCallerFrame(stackTrace);
- }
-
- String signature = callerFrame.getMethodName();
-
- // Specific method settings still could exist. Try getting
- // the settings for this method.
- if(methodSettings != null)
- {
- TraceSettings mSettings = methodSettings.get(signature);
-
- if (mSettings == null)
- {
- // Try looking for an undecorated method name
- int idx = signature.indexOf('(');
- if (idx != -1)
- {
- mSettings =
- methodSettings.get(signature.substring(0, idx));
- }
- }
-
- // If this method does have a specific setting and it is not
- // suppose to be logged, continue.
- if (mSettings != null)
- {
- if(!shouldLog(level, DebugLogCategory.CONSTRUCTOR,
- mSettings))
- {
- continue;
- }
- else
- {
- activeSettings = mSettings;
- }
- }
- }
-
- String sl = callerFrame.getFileName() + ":" +
- callerFrame.getLineNumber();
-
- if (activeSettings.noArgs)
- {
- args = null;
- }
-
- if (filteredStackTrace == null && activeSettings.stackDepth > 0)
- {
- filteredStackTrace =
- DebugStackTraceFormatter.SMART_FRAME_FILTER.
- getFilteredStackTrace(stackTrace);
- }
-
- settings.debugPublisher.traceConstructor(level,
- activeSettings, signature,
- sl, args,
- filteredStackTrace);
- }
- }
- }
- }
-
- /**
- * Log an non static method entry event.
- *
- * @param level The level of the message being logged.
- * @param obj The object type instance the method is a member of.
- * @param args The arguments passed to the method.
- */
- public void debugMethodEntry(LogLevel level, Object obj, Object... args)
- {
- if(DebugLogger.debugEnabled())
- {
- StackTraceElement[] stackTrace = null;
- StackTraceElement[] filteredStackTrace = null;
- StackTraceElement callerFrame = null;
- for (PublisherSettings settings : publisherSettings)
- {
- TraceSettings activeSettings = settings.classSettings;
- Map<String, TraceSettings> methodSettings = settings.methodSettings;
-
- if (shouldLog(level, DebugLogCategory.ENTER,
- activeSettings) || methodSettings != null)
- {
- if(stackTrace == null)
- {
- stackTrace = Thread.currentThread().getStackTrace();
- }
- if (callerFrame == null)
- {
- callerFrame = getCallerFrame(stackTrace);
- }
-
- String signature = callerFrame.getMethodName();
-
- // Specific method settings still could exist. Try getting
- // the settings for this method.
- if(methodSettings != null)
- {
- TraceSettings mSettings = methodSettings.get(signature);
-
- if (mSettings == null)
- {
- // Try looking for an undecorated method name
- int idx = signature.indexOf('(');
- if (idx != -1)
- {
- mSettings =
- methodSettings.get(signature.substring(0, idx));
- }
- }
-
- // If this method does have a specific setting and it is not
- // suppose to be logged, continue.
- if (mSettings != null)
- {
- if(!shouldLog(level, DebugLogCategory.ENTER,
- mSettings))
- {
- continue;
- }
- else
- {
- activeSettings = mSettings;
- }
- }
- }
-
- String sl = callerFrame.getFileName() + ":" +
- callerFrame.getLineNumber();
-
- if (activeSettings.noArgs)
- {
- args = null;
- }
-
- if (filteredStackTrace == null && activeSettings.stackDepth > 0)
- {
- filteredStackTrace =
- DebugStackTraceFormatter.SMART_FRAME_FILTER.
- getFilteredStackTrace(stackTrace);
- }
-
- settings.debugPublisher.traceMethodEntry(level,
- activeSettings, signature,
- sl, obj, args,
- filteredStackTrace);
- }
- }
- }
- }
-
- /**
- * Log an static method entry event.
- *
- * @param level The level of the message being logged.
- * @param args The arguments passed to the method.
- */
- public void debugStaticMethodEntry(LogLevel level, Object... args)
- {
- if(DebugLogger.debugEnabled())
- {
- StackTraceElement[] stackTrace = null;
- StackTraceElement[] filteredStackTrace = null;
- StackTraceElement callerFrame = null;
- for (PublisherSettings settings : publisherSettings)
- {
- TraceSettings activeSettings = settings.classSettings;
- Map<String, TraceSettings> methodSettings = settings.methodSettings;
-
- if (shouldLog(level, DebugLogCategory.ENTER,
- activeSettings) || methodSettings != null)
- {
- if(stackTrace == null)
- {
- stackTrace = Thread.currentThread().getStackTrace();
- }
- if (callerFrame == null)
- {
- callerFrame = getCallerFrame(stackTrace);
- }
-
- String signature = callerFrame.getMethodName();
-
- // Specific method settings still could exist. Try getting
- // the settings for this method.
- if(methodSettings != null)
- {
- TraceSettings mSettings = methodSettings.get(signature);
-
- if (mSettings == null)
- {
- // Try looking for an undecorated method name
- int idx = signature.indexOf('(');
- if (idx != -1)
- {
- mSettings =
- methodSettings.get(signature.substring(0, idx));
- }
- }
-
- // If this method does have a specific setting and it is not
- // suppose to be logged, continue.
- if (mSettings != null)
- {
- if(!shouldLog(level, DebugLogCategory.ENTER,
- mSettings))
- {
- continue;
- }
- else
- {
- activeSettings = mSettings;
- }
- }
- }
-
- String sl = callerFrame.getFileName() + ":" +
- callerFrame.getLineNumber();
-
- if (activeSettings.noArgs)
- {
- args = null;
- }
-
- if (filteredStackTrace == null && activeSettings.stackDepth > 0)
- {
- filteredStackTrace =
- DebugStackTraceFormatter.SMART_FRAME_FILTER.
- getFilteredStackTrace(stackTrace);
- }
-
- settings.debugPublisher.traceStaticMethodEntry(level,
- activeSettings,
- signature, sl, args,
- filteredStackTrace);
- }
- }
- }
- }
-
- /**
- * Log a return from a method call event.
- *
- * @param level The level of the message being logged.
- * @param ret The value being returned from the method.
- */
- public void debugReturn(LogLevel level, Object ret)
- {
- if(DebugLogger.debugEnabled())
- {
- StackTraceElement[] stackTrace = null;
- StackTraceElement[] filteredStackTrace = null;
- StackTraceElement callerFrame = null;
- for (PublisherSettings settings : publisherSettings)
- {
- TraceSettings activeSettings = settings.classSettings;
- Map<String, TraceSettings> methodSettings = settings.methodSettings;
-
- if (shouldLog(level, DebugLogCategory.ENTER,
- activeSettings) || methodSettings != null)
- {
- if(stackTrace == null)
- {
- stackTrace = Thread.currentThread().getStackTrace();
- }
- if (callerFrame == null)
- {
- callerFrame = getCallerFrame(stackTrace);
- }
-
- String signature = callerFrame.getMethodName();
-
- // Specific method settings still could exist. Try getting
- // the settings for this method.
- if(methodSettings != null)
- {
- TraceSettings mSettings = methodSettings.get(signature);
-
- if (mSettings == null)
- {
- // Try looking for an undecorated method name
- int idx = signature.indexOf('(');
- if (idx != -1)
- {
- mSettings =
- methodSettings.get(signature.substring(0, idx));
- }
- }
-
- // If this method does have a specific setting and it is not
- // suppose to be logged, continue.
- if (mSettings != null)
- {
- if(!shouldLog(level, DebugLogCategory.ENTER,
- mSettings))
- {
- continue;
- }
- else
- {
- activeSettings = mSettings;
- }
- }
- }
-
- String sl = callerFrame.getFileName() + ":" +
- callerFrame.getLineNumber();
-
- if (activeSettings.noRetVal)
- {
- ret = null;
- }
-
- if (filteredStackTrace == null && activeSettings.stackDepth > 0)
- {
- filteredStackTrace =
- DebugStackTraceFormatter.SMART_FRAME_FILTER.
- getFilteredStackTrace(stackTrace);
- }
-
- settings.debugPublisher.traceReturn(level,
- activeSettings, signature,
- sl, ret,
- filteredStackTrace);
- }
- }
- }
- }
-
- /**
- * Log an exception thrown from a method.
- *
- * @param level The level of the message being logged.
- * @param ex The exception being thrown.
- */
- public void debugThrown(LogLevel level, Throwable ex)
- {
- if(DebugLogger.debugEnabled())
- {
- StackTraceElement[] stackTrace = null;
- StackTraceElement[] filteredStackTrace = null;
- StackTraceElement callerFrame = null;
- for (PublisherSettings settings : publisherSettings)
- {
- TraceSettings activeSettings = settings.classSettings;
- Map<String, TraceSettings> methodSettings = settings.methodSettings;
-
- if (shouldLog(level, DebugLogCategory.THROWN,
- activeSettings) || methodSettings != null)
- {
- if(stackTrace == null)
- {
- stackTrace = Thread.currentThread().getStackTrace();
- }
- if (callerFrame == null)
- {
- callerFrame = getCallerFrame(stackTrace);
- }
-
- String signature = callerFrame.getMethodName();
-
- // Specific method settings still could exist. Try getting
- // the settings for this method.
- if(methodSettings != null)
- {
- TraceSettings mSettings = methodSettings.get(signature);
-
- if (mSettings == null)
- {
- // Try looking for an undecorated method name
- int idx = signature.indexOf('(');
- if (idx != -1)
- {
- mSettings =
- methodSettings.get(signature.substring(0, idx));
- }
- }
-
- // If this method does have a specific setting and it is not
- // suppose to be logged, continue.
- if (mSettings != null)
- {
- if(!shouldLog(level, DebugLogCategory.THROWN,
- mSettings))
- {
- continue;
- }
- else
- {
- activeSettings = mSettings;
- }
- }
- }
-
- String sl = callerFrame.getFileName() + ":" +
- callerFrame.getLineNumber();
-
- if (filteredStackTrace == null && activeSettings.stackDepth > 0)
- {
- filteredStackTrace =
- DebugStackTraceFormatter.SMART_FRAME_FILTER.
- getFilteredStackTrace(ex.getStackTrace());
- }
-
- settings.debugPublisher.traceThrown(level, activeSettings, signature,
- sl, ex, filteredStackTrace);
- }
- }
- }
- }
-
- /**
* Log an arbitrary event at the verbose level.
* Same as debugMessage(DebugLogLevel.ERROR, msg)
*
@@ -672,8 +223,7 @@
TraceSettings activeSettings = settings.classSettings;
Map<String, TraceSettings> methodSettings = settings.methodSettings;
- if (shouldLog(level, DebugLogCategory.MESSAGE,
- activeSettings) || methodSettings != null)
+ if (shouldLog(DebugLogCategory.MESSAGE, activeSettings) || methodSettings != null)
{
if(stackTrace == null)
{
@@ -707,8 +257,7 @@
// suppose to be logged, continue.
if (mSettings != null)
{
- if(!shouldLog(level, DebugLogCategory.MESSAGE,
- mSettings))
+ if(!shouldLog(DebugLogCategory.MESSAGE, mSettings))
{
continue;
}
@@ -734,8 +283,8 @@
getFilteredStackTrace(stackTrace);
}
- settings.debugPublisher.traceMessage(level, activeSettings, signature,
- sl, msg, filteredStackTrace);
+ settings.debugPublisher.traceMessage(activeSettings, signature, sl,
+ msg, filteredStackTrace);
}
}
}
@@ -749,6 +298,17 @@
*/
public void debugCaught(LogLevel level, Throwable ex)
{
+ debugCaught("", ex);
+ }
+
+ /**
+ * Log a caught exception.
+ *
+ * @param msg the message
+ * @param ex the exception caught.
+ */
+ public void debugCaught(String msg, Throwable ex)
+ {
if(DebugLogger.debugEnabled())
{
StackTraceElement[] stackTrace = null;
@@ -759,8 +319,7 @@
TraceSettings activeSettings = settings.classSettings;
Map<String, TraceSettings> methodSettings = settings.methodSettings;
- if (shouldLog(level, DebugLogCategory.CAUGHT,
- activeSettings) || methodSettings != null)
+ if (shouldLog(DebugLogCategory.CAUGHT, activeSettings) || methodSettings != null)
{
if(stackTrace == null)
{
@@ -794,8 +353,7 @@
// suppose to be logged, continue.
if (mSettings != null)
{
- if(!shouldLog(level, DebugLogCategory.CAUGHT,
- mSettings))
+ if(!shouldLog(DebugLogCategory.CAUGHT, mSettings))
{
continue;
}
@@ -816,8 +374,8 @@
getFilteredStackTrace(ex.getStackTrace());
}
- settings.debugPublisher.traceCaught(level, activeSettings, signature,
- sl, ex, filteredStackTrace);
+ settings.debugPublisher.traceCaught(activeSettings, signature, sl,
+ msg, ex, filteredStackTrace);
}
}
}
@@ -847,8 +405,7 @@
TraceSettings activeSettings = settings.classSettings;
Map<String, TraceSettings> methodSettings = settings.methodSettings;
- if (shouldLog(level, DebugLogCategory.DATABASE_ACCESS,
- activeSettings) || methodSettings != null)
+ if (shouldLog(DebugLogCategory.MESSAGE, activeSettings) || methodSettings != null)
{
if(stackTrace == null)
{
@@ -882,8 +439,7 @@
// suppose to be logged, continue.
if (mSettings != null)
{
- if(!shouldLog(level, DebugLogCategory.DATABASE_ACCESS,
- mSettings))
+ if(!shouldLog(DebugLogCategory.MESSAGE, mSettings))
{
continue;
}
@@ -904,92 +460,9 @@
getFilteredStackTrace(stackTrace);
}
- settings.debugPublisher.traceJEAccess(level, activeSettings,
- signature, sl, status, database,
- txn, key, data,
- filteredStackTrace);
- }
- }
- }
- }
-
- /**
- * Log raw data in the form of a byte array.
- *
- * @param level the level of the log message.
- * @param data the data to dump.
- */
- public void debugData(LogLevel level, byte[] data)
- {
- if(DebugLogger.debugEnabled() && data != null)
- {
- StackTraceElement[] stackTrace = null;
- StackTraceElement[] filteredStackTrace = null;
- StackTraceElement callerFrame = null;
- for (PublisherSettings settings : publisherSettings)
- {
- TraceSettings activeSettings = settings.classSettings;
- Map<String, TraceSettings> methodSettings = settings.methodSettings;
-
- if (shouldLog(level, DebugLogCategory.DATA,
- activeSettings) || methodSettings != null)
- {
- if(stackTrace == null)
- {
- stackTrace = Thread.currentThread().getStackTrace();
- }
- if (callerFrame == null)
- {
- callerFrame = getCallerFrame(stackTrace);
- }
-
- String signature = callerFrame.getMethodName();
-
- // Specific method settings still could exist. Try getting
- // the settings for this method.
- if(methodSettings != null)
- {
- TraceSettings mSettings = methodSettings.get(signature);
-
- if (mSettings == null)
- {
- // Try looking for an undecorated method name
- int idx = signature.indexOf('(');
- if (idx != -1)
- {
- mSettings =
- methodSettings.get(signature.substring(0, idx));
- }
- }
-
- // If this method does have a specific setting and it is not
- // suppose to be logged, continue.
- if (mSettings != null)
- {
- if(!shouldLog(level, DebugLogCategory.DATA,
- mSettings))
- {
- continue;
- }
- else
- {
- activeSettings = mSettings;
- }
- }
- }
-
- String sl = callerFrame.getFileName() + ":" +
- callerFrame.getLineNumber();
-
- if (filteredStackTrace == null && activeSettings.stackDepth > 0)
- {
- filteredStackTrace =
- DebugStackTraceFormatter.SMART_FRAME_FILTER.
- getFilteredStackTrace(stackTrace);
- }
-
- settings.debugPublisher.traceData(level, activeSettings, signature,
- sl, data, filteredStackTrace);
+ settings.debugPublisher.traceJEAccess(activeSettings, signature,
+ sl, status, database, txn,
+ key, data, filteredStackTrace);
}
}
}
@@ -1013,8 +486,7 @@
TraceSettings activeSettings = settings.classSettings;
Map<String, TraceSettings> methodSettings = settings.methodSettings;
- if (shouldLog(level, DebugLogCategory.PROTOCOL,
- activeSettings) || methodSettings != null)
+ if (shouldLog(DebugLogCategory.MESSAGE, activeSettings) || methodSettings != null)
{
if(stackTrace == null)
{
@@ -1048,8 +520,7 @@
// suppose to be logged, continue.
if (mSettings != null)
{
- if(!shouldLog(level, DebugLogCategory.PROTOCOL,
- mSettings))
+ if(!shouldLog(DebugLogCategory.MESSAGE, mSettings))
{
continue;
}
@@ -1070,9 +541,8 @@
getFilteredStackTrace(stackTrace);
}
- settings.debugPublisher.traceProtocolElement(level, activeSettings,
- signature, sl,
- elementStr,
+ settings.debugPublisher.traceProtocolElement(activeSettings, signature,
+ sl, elementStr,
filteredStackTrace);
}
}
@@ -1080,17 +550,6 @@
}
/**
- * Log raw data in the form of a ByteBuffer.
- *
- * @param level the level of the log message.
- * @param buffer the data to dump.
- */
- public void debugData(LogLevel level, ByteBuffer buffer)
- {
- debugData(level, buffer.array());
- }
-
- /**
* Gets the name of the class this tracer traces.
*
* @return The name of the class this tracer traces.
@@ -1101,6 +560,51 @@
}
/**
+ * Indicates if logging is enabled for the provided debug log
+ * category.
+ *
+ * @param logCategory
+ * Log category to check
+ * @return {@code true} if logging is enabled, false otherwise.
+ */
+ public boolean enabledFor(LogCategory logCategory)
+ {
+ for (PublisherSettings settings : publisherSettings)
+ {
+ TraceSettings activeSettings = settings.classSettings;
+ Map<String, TraceSettings> methodSettings = settings.methodSettings;
+
+ if (shouldLog(logCategory, activeSettings)
+ || methodSettings != null)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Indicates if logging is enabled for at least one category
+ * in a publisher.
+ *
+ * @return {@code true} if logging is enabled, false otherwise.
+ */
+ public boolean enabled()
+ {
+ for (PublisherSettings settings : publisherSettings)
+ {
+ TraceSettings activeSettings = settings.classSettings;
+ Map<String, TraceSettings> methodSettings = settings.methodSettings;
+
+ if (shouldLog(activeSettings) || methodSettings != null)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
* Update the cached settings of the tracer with the settings from the
* provided publishers.
*
@@ -1166,12 +670,15 @@
return null;
}
- private boolean shouldLog(LogLevel messageLevel, LogCategory messageCategory,
- TraceSettings activeSettings)
+ private boolean shouldLog(LogCategory messageCategory, TraceSettings activeSettings)
{
- return !(activeSettings.includeCategories != null &&
- !activeSettings.includeCategories.contains(messageCategory)) &&
- messageLevel.intValue() >= activeSettings.level.intValue();
+ return activeSettings.includeCategories != null &&
+ activeSettings.includeCategories.contains(messageCategory);
+ }
+ /** Indicates if at least one category is active for logging. */
+ private boolean shouldLog(TraceSettings settings)
+ {
+ return settings.includeCategories != null && !settings.includeCategories.isEmpty();
}
}
--
Gitblit v1.10.0