[ 
https://issues.apache.org/jira/browse/APEXCORE-786?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16217401#comment-16217401
 ] 

ASF GitHub Bot commented on APEXCORE-786:
-----------------------------------------

PramodSSImmaneni closed pull request #582: APEXCORE-786 LoggerUtil should allow 
to add/remove/list appenders for a specified logger
URL: https://github.com/apache/apex-core/pull/582
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/engine/src/main/java/com/datatorrent/stram/util/LoggerUtil.java 
b/engine/src/main/java/com/datatorrent/stram/util/LoggerUtil.java
index c862634d77..c6caa20d31 100644
--- a/engine/src/main/java/com/datatorrent/stram/util/LoggerUtil.java
+++ b/engine/src/main/java/com/datatorrent/stram/util/LoggerUtil.java
@@ -377,21 +377,36 @@ private static boolean isErrorLevelEnable(FileAppender 
fileAppender)
    */
   public static boolean addAppender(String name, Properties properties)
   {
-    if (getAppendersNames().contains(name)) {
-      logger.warn("A logger appender with the name '{}' exists. Cannot add a 
new logger appender with the same name", name);
+    return addAppender(LogManager.getRootLogger(), name, properties);
+  }
+
+  /**
+   * Adds Logger Appender to a specified logger
+   * @param logger Logger to add appender to, if null, use root logger
+   * @param name Appender name
+   * @param properties Appender properties
+   * @return True if the appender has been added successfully
+   */
+  public static boolean addAppender(Logger logger, String name, Properties 
properties)
+  {
+    if (logger == null) {
+      logger = LogManager.getRootLogger();
+    }
+    if (getAppendersNames(logger).contains(name)) {
+      LoggerUtil.logger.warn("A logger appender with the name '{}' exists. 
Cannot add a new logger appender with the same name", name);
     } else {
       try {
         Method method = 
PropertyConfigurator.class.getDeclaredMethod("parseAppender", Properties.class, 
String.class);
         method.setAccessible(true);
         Appender appender = (Appender)method.invoke(new 
PropertyConfigurator(), properties, name);
         if (appender == null) {
-          logger.warn("Cannot add a new logger appender. Name: {}, Properties: 
{}", name, properties);
+          LoggerUtil.logger.warn("Cannot add a new logger appender. Name: {}, 
Properties: {}", name, properties);
         } else {
-          LogManager.getRootLogger().addAppender(appender);
+          logger.addAppender(appender);
           return true;
         }
       } catch (Exception ex) {
-        logger.warn("Cannot add a new logger appender. Name: {}, Properties: 
{}", name, properties, ex);
+        LoggerUtil.logger.warn("Cannot add a new logger appender. Name: {}, 
Properties: {}", name, properties, ex);
       }
     }
     return false;
@@ -406,6 +421,19 @@ public static boolean addAppender(String name, Properties 
properties)
    */
   public static boolean addAppenders(String[] names, String args, String 
propertySeparator)
   {
+    return addAppenders(LogManager.getRootLogger(), names, args, 
propertySeparator);
+  }
+
+  /**
+   * Adds Logger Appenders
+   * @param logger Logger to add appender to, if null, use root logger
+   * @param names Names of appender
+   * @param args Args with properties
+   * @param propertySeparator Property separator
+   * @return True if all of the appenders have been added successfully
+   */
+  public static boolean addAppenders(Logger logger, String[] names, String 
args, String propertySeparator)
+  {
     if (names == null || args == null || names.length == 0 || 
propertySeparator == null) {
       throw new IllegalArgumentException("Incorrect appender parametrs");
     }
@@ -413,8 +441,11 @@ public static boolean addAppenders(String[] names, String 
args, String propertyS
     try {
       Properties properties = new Properties();
       properties.load(new StringReader(args.replaceAll(propertySeparator, 
"\n")));
+      if (logger == null) {
+        logger = LogManager.getRootLogger();
+      }
       for (String name : names) {
-        if (!addAppender(name, properties)) {
+        if (!addAppender(logger, name, properties)) {
           status = false;
         }
       }
@@ -450,13 +481,27 @@ public static boolean addAppenders()
    */
   public static boolean removeAppender(String name)
   {
+    return removeAppender(LogManager.getRootLogger(), name);
+  }
+
+  /**
+   * Removes Logger Appender
+   * @param logger Logger to remove appender from, if null, use root logger
+   * @param name Appender name
+   * @return True if the appender has been removed successfully
+   */
+  public static boolean removeAppender(Logger logger, String name)
+  {
+    if (logger == null) {
+      logger = LogManager.getRootLogger();
+    }
     try {
-      LogManager.getRootLogger().removeAppender(name);
+      logger.removeAppender(name);
     } catch (Exception ex) {
-      logger.error("Cannot remove the logger appender: {}", name, ex);
+      LoggerUtil.logger.error("Cannot remove the logger appender: {}", name, 
ex);
       return false;
     }
-    return false;
+    return true;
   }
 
   /**
@@ -465,7 +510,20 @@ public static boolean removeAppender(String name)
    */
   public static List<String> getAppendersNames()
   {
-    Enumeration enumeration = LogManager.getRootLogger().getAllAppenders();
+    return getAppendersNames(LogManager.getRootLogger());
+  }
+
+  /**
+   * Returns a list names of the appenders
+   * @param logger Logger to list appender for, if null, use root logger
+   * @return Names of the appenders
+   */
+  public static List<String> getAppendersNames(Logger logger)
+  {
+    if (logger == null) {
+      logger = LogManager.getRootLogger();
+    }
+    Enumeration enumeration = logger.getAllAppenders();
     List<String> names = new LinkedList<>();
     while (enumeration.hasMoreElements()) {
       names.add(((Appender)enumeration.nextElement()).getName());
diff --git 
a/engine/src/test/java/com/datatorrent/stram/util/LoggerUtilTest.java 
b/engine/src/test/java/com/datatorrent/stram/util/LoggerUtilTest.java
index 88aec3bd9b..770144101b 100644
--- a/engine/src/test/java/com/datatorrent/stram/util/LoggerUtilTest.java
+++ b/engine/src/test/java/com/datatorrent/stram/util/LoggerUtilTest.java
@@ -31,6 +31,7 @@
 import org.apache.log4j.ConsoleAppender;
 import org.apache.log4j.Level;
 import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
 import org.apache.log4j.spi.LoggingEvent;
 
 import com.google.common.collect.Maps;
@@ -237,16 +238,17 @@ public void testSetupMDC()
     System.setProperty(APPLICATION_NAME.getLongName(), application);
     LoggerUtil.setupMDC(service);
 
-    LoggerUtil.addAppenders(new String[] {appenderName }, args, ",");
-    TestAppender appender = 
(TestAppender)org.apache.log4j.Logger.getRootLogger().getAppender(appenderName);
+    Logger logger = LogManager.getLogger(LoggerUtilTest.class);
+    LoggerUtil.addAppenders(logger, new String[] {appenderName}, args, ",");
+    TestAppender appender = (TestAppender)logger.getAppender(appenderName);
 
-    logger.info(args);
+    LoggerUtilTest.logger.info(args);
     assertEquals(service, appender.mdcProperties.get("apex.service"));
     String node = StramClientUtils.getHostName();
     assertEquals(node == null ? "unknown" : node, 
appender.mdcProperties.get("apex.node"));
     assertEquals(application, appender.mdcProperties.get("apex.application"));
 
-    LoggerUtil.removeAppender(appenderName);
+    assertTrue(LoggerUtil.removeAppender(logger, appenderName));
   }
 
   public static class TestAppender extends ConsoleAppender
@@ -258,7 +260,6 @@ public void testSetupMDC()
     @Override
     public void append(LoggingEvent event)
     {
-      event.getMDCCopy();
       mdcProperties = event.getProperties();
       lastMessage = event.getRenderedMessage();
       level = event.getLevel();


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


> LoggerUtil should allow to add/remove/list appenders for a specified logger
> ---------------------------------------------------------------------------
>
>                 Key: APEXCORE-786
>                 URL: https://issues.apache.org/jira/browse/APEXCORE-786
>             Project: Apache Apex Core
>          Issue Type: Improvement
>            Reporter: Vlad Rozov
>            Assignee: Vlad Rozov
>            Priority: Minor
>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to