From 691bf5ec5d641c0552f4b243c4efa34ec2e529dc Mon Sep 17 00:00:00 2001 From: wenxinhe Date: Tue, 1 Aug 2017 16:19:00 +0800 Subject: [PATCH] HADOOP-14706. Adding a helper method to determine whether a log is Log4j implement. This closes #257 Signed-off-by: Akira Ajisaka --- hadoop-common-project/hadoop-common/pom.xml | 2 +- .../java/org/apache/hadoop/util/GenericsUtil.java | 15 +++++++++++++++ .../org/apache/hadoop/util/TestGenericsUtil.java | 5 +++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/hadoop-common-project/hadoop-common/pom.xml b/hadoop-common-project/hadoop-common/pom.xml index ad6f734a16..0cd54799ab 100644 --- a/hadoop-common-project/hadoop-common/pom.xml +++ b/hadoop-common-project/hadoop-common/pom.xml @@ -179,7 +179,7 @@ org.slf4j slf4j-log4j12 - runtime + compile org.mockito diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericsUtil.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericsUtil.java index 611fff922c..a53096a957 100644 --- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericsUtil.java +++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/util/GenericsUtil.java @@ -23,6 +23,9 @@ import org.apache.hadoop.classification.InterfaceAudience; import org.apache.hadoop.classification.InterfaceStability; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.impl.Log4jLoggerAdapter; /** * Contains utility methods for dealing with Java Generics. @@ -72,4 +75,16 @@ public static T[] toArray(List list) { return toArray(getClass(list.get(0)), list); } + /** + * Determine whether the log of clazz is Log4j implementation. + * @param clazz a class to be determined + * @return true if the log of clazz is Log4j implementation. + */ + public static boolean isLog4jLogger(Class clazz) { + if (clazz == null) { + return false; + } + Logger log = LoggerFactory.getLogger(clazz); + return log instanceof Log4jLoggerAdapter; + } } diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericsUtil.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericsUtil.java index 25e2ce9be9..58537adf5c 100644 --- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericsUtil.java +++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/util/TestGenericsUtil.java @@ -131,4 +131,9 @@ public void testGetClass() { GenericClass.class, c2); } + public void testIsLog4jLogger() throws Exception { + assertFalse("False if clazz is null", GenericsUtil.isLog4jLogger(null)); + assertTrue("The implementation is Log4j", + GenericsUtil.isLog4jLogger(TestGenericsUtil.class)); + } }