This is an automated email from the ASF dual-hosted git repository.
pramod pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apex-core.git
The following commit(s) were added to refs/heads/master by this push:
new 7995d36 APEXCORE-786 LoggerUtil should allow to add/remove/list
appenders for a specified logger
7995d36 is described below
commit 7995d3629ec90fd93fd2cbc952c0c9931aae0289
Author: Vlad Rozov <[email protected]>
AuthorDate: Sun Sep 24 20:23:13 2017 -0700
APEXCORE-786 LoggerUtil should allow to add/remove/list appenders for a
specified logger
---
.../com/datatorrent/stram/util/LoggerUtil.java | 78 +++++++++++++++++++---
.../com/datatorrent/stram/util/LoggerUtilTest.java | 11 +--
2 files changed, 74 insertions(+), 15 deletions(-)
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 c862634..c6caa20 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 @@ public class LoggerUtil
*/
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 class LoggerUtil
*/
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 class LoggerUtil
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 class LoggerUtil
*/
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 class LoggerUtil
*/
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 88aec3b..7701441 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.Category;
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 class LoggerUtilTest
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 class LoggerUtilTest
@Override
public void append(LoggingEvent event)
{
- event.getMDCCopy();
mdcProperties = event.getProperties();
lastMessage = event.getRenderedMessage();
level = event.getLevel();
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].