From 5d1a7f43aa3104bd4047839897a65066c555f7a9 Mon Sep 17 00:00:00 2001
From: Nicolas Capponi <nicolas.capponi@forgerock.com>
Date: Thu, 13 Feb 2014 13:00:25 +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/DebugLogger.java |   44 ++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 44 insertions(+), 0 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java b/opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java
index 4d343df..78311a6 100644
--- a/opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java
+++ b/opendj3-server-dev/src/server/org/opends/server/loggers/DebugLogger.java
@@ -27,8 +27,11 @@
 package org.opends.server.loggers;
 
 import static org.opends.messages.ConfigMessages.*;
+import static org.opends.server.util.ServerConstants.*;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
@@ -149,6 +152,47 @@
     return tracer;
   }
 
+  /**
+   * Adds a text debug log publisher that will print all messages to the
+   * provided writer, based on debug target(s) defined through system
+   * properties.
+   * <p>
+   * It is expected that one or more system properties beginning with
+   * {@code PROPERTY_DEBUG_TARGET} are set to define the properties of the debug
+   * targets used by the publisher, otherwise no publisher is added.
+   *
+   * @param writer
+   *          The text writer where the message will be written to.
+   * @return the publisher. It may be {@code null} if no publisher is added.
+   */
+  @SuppressWarnings({ "unchecked", "rawtypes" })
+  public final TextDebugLogPublisher addPublisherIfRequired(TextWriter writer)
+  {
+    final List<String> debugTargets = getDebugTargetsFromSystemProperties();
+    TextDebugLogPublisher publisher = null;
+    if (!debugTargets.isEmpty())
+    {
+      publisher = TextDebugLogPublisher.getStartupTextDebugPublisher(debugTargets, writer);
+      if (publisher != null) {
+        addLogPublisher((DebugLogPublisher) publisher);
+      }
+    }
+    return publisher;
+  }
+
+  private List<String> getDebugTargetsFromSystemProperties()
+  {
+    final List<String> targets = new ArrayList<String>();
+    for (Map.Entry<Object, Object> entry : System.getProperties().entrySet())
+    {
+      if (((String) entry.getKey()).startsWith(PROPERTY_DEBUG_TARGET))
+      {
+        targets.add((String)entry.getValue());
+      }
+    }
+    return targets;
+  }
+
   /** {@inheritDoc} */
   @Override
   public final synchronized void addLogPublisher(

--
Gitblit v1.10.0