From 9f9b99a4b91a2d5ba9422b7ace48c2a80a9541f0 Mon Sep 17 00:00:00 2001 From: Ryan Blue Date: Tue, 24 Nov 2015 16:10:45 -0800 Subject: [PATCH 1/2] PARQUET-305: Update logging to SLF4J. This removes the Log implementation based on java.util.logging and replaces it with SLF4J. The compiler removal of debug log messages still works because Log.DEBUG and similar final constants are unchanged. The Log class and API is now deprecated in favor of using SLF4J directly. The main reason is to avoid expensive string construction when possible by exposing the full SLF4J API. This commit adds slf4j-simple as the test logger implementation. Configuration for slf4j-simple is in the root pom. Two modules can't use slf4j-simple, parquet-pig and parquet-thrift, and use slf4j-log4j12 instead because pig depends on log4j and tests die without it. --- parquet-avro/pom.xml | 6 ++ parquet-benchmarks/pom.xml | 6 ++ parquet-cascading/pom.xml | 6 -- parquet-column/pom.xml | 6 ++ parquet-common/pom.xml | 21 ++++- .../src/main/java/org/apache/parquet/Log.java | 89 ++++--------------- parquet-encoding/pom.xml | 7 ++ parquet-hadoop/pom.xml | 31 +++---- parquet-pig/pom.xml | 12 +-- parquet-protobuf/pom.xml | 6 ++ parquet-scala/pom.xml | 6 ++ parquet-scrooge/pom.xml | 6 -- parquet-thrift/pom.xml | 12 +-- parquet-tools/pom.xml | 5 ++ pom.xml | 11 ++- 15 files changed, 114 insertions(+), 116 deletions(-) diff --git a/parquet-avro/pom.xml b/parquet-avro/pom.xml index eb8d3b1e5b..94343438df 100644 --- a/parquet-avro/pom.xml +++ b/parquet-avro/pom.xml @@ -81,6 +81,12 @@ test-jar test + + org.slf4j + slf4j-simple + ${slf4j.version} + test + diff --git a/parquet-benchmarks/pom.xml b/parquet-benchmarks/pom.xml index f0deba3457..ae50b5b6e7 100644 --- a/parquet-benchmarks/pom.xml +++ b/parquet-benchmarks/pom.xml @@ -63,6 +63,12 @@ ${jmh.version} provided + + org.slf4j + slf4j-simple + ${slf4j.version} + test + diff --git a/parquet-cascading/pom.xml b/parquet-cascading/pom.xml index 81b955cb39..0cd858886e 100644 --- a/parquet-cascading/pom.xml +++ b/parquet-cascading/pom.xml @@ -67,12 +67,6 @@ ${hadoop.version} provided - - log4j - log4j - ${log4j.version} - provided - org.apache.parquet parquet-column diff --git a/parquet-column/pom.xml b/parquet-column/pom.xml index f2a0f4c564..ccceafae2a 100644 --- a/parquet-column/pom.xml +++ b/parquet-column/pom.xml @@ -77,6 +77,12 @@ 1.3.149 test + + org.slf4j + slf4j-simple + ${slf4j.version} + test + diff --git a/parquet-common/pom.xml b/parquet-common/pom.xml index 6697e3b260..d4fb8eef2b 100644 --- a/parquet-common/pom.xml +++ b/parquet-common/pom.xml @@ -37,10 +37,23 @@ - org.semver - api - ${semver.api.version} - test + org.slf4j + slf4j-api + ${slf4j.version} + + + + org.semver + api + ${semver.api.version} + test + + + + org.slf4j + slf4j-simple + ${slf4j.version} + test diff --git a/parquet-common/src/main/java/org/apache/parquet/Log.java b/parquet-common/src/main/java/org/apache/parquet/Log.java index a39f4b2e6d..1774ee3b48 100644 --- a/parquet-common/src/main/java/org/apache/parquet/Log.java +++ b/parquet-common/src/main/java/org/apache/parquet/Log.java @@ -18,16 +18,9 @@ */ package org.apache.parquet; -import java.io.PrintWriter; -import java.io.StringWriter; -import java.text.MessageFormat; -import java.util.Date; -import java.util.logging.Formatter; -import java.util.logging.Handler; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.util.logging.Level; -import java.util.logging.LogRecord; -import java.util.logging.Logger; -import java.util.logging.StreamHandler; /** * Simple wrapper around java.util.logging @@ -41,6 +34,7 @@ * @author Julien Le Dem * */ +@Deprecated public class Log { /** @@ -53,62 +47,13 @@ public class Log { public static final boolean WARN = (LEVEL.intValue() <= Level.WARNING.intValue()); public static final boolean ERROR = (LEVEL.intValue() <= Level.SEVERE.intValue()); - static { - // add a default handler in case there is none - Logger logger = Logger.getLogger(Log.class.getPackage().getName()); - Handler[] handlers = logger.getHandlers(); - if (handlers == null || handlers.length == 0) { - logger.setUseParentHandlers(false); - StreamHandler handler = new StreamHandler(System.out, new Formatter() { - Date dat = new Date(); - private final static String format = "{0,date} {0,time}"; - private MessageFormat formatter = new MessageFormat(format); - - private Object args[] = new Object[1]; - - /** - * Format the given LogRecord. - * @param record the log record to be formatted. - * @return a formatted log record - */ - public synchronized String format(LogRecord record) { - StringBuffer sb = new StringBuffer(); - // Minimize memory allocations here. - dat.setTime(record.getMillis()); - args[0] = dat; - formatter.format(args, sb, null); - sb.append(" "); - sb.append(record.getLevel().getLocalizedName()); - sb.append(": "); - sb.append(record.getLoggerName()); - - sb.append(": "); - sb.append(formatMessage(record)); - sb.append("\n"); - if (record.getThrown() != null) { - try { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - record.getThrown().printStackTrace(pw); - pw.close(); - sb.append(sw.toString()); - } catch (Exception ex) { - } - } - return sb.toString(); - } - }); - handler.setLevel(LEVEL); - logger.addHandler(handler); - } - logger.setLevel(LEVEL); - } - /** * * @param c the current class * @return the corresponding logger + * @deprecated will be removed in 2.0.0; use org.slf4j.LoggerFactory instead. */ + @Deprecated public static Log getLog(Class c) { return new Log(c); } @@ -116,7 +61,7 @@ public static Log getLog(Class c) { private Logger logger; public Log(Class c) { - this.logger = Logger.getLogger(c.getName()); + this.logger = LoggerFactory.getLogger(c); } /** @@ -125,9 +70,9 @@ public Log(Class c) { */ public void debug(Object m) { if (m instanceof Throwable) { - logger.log(Level.FINE, "", (Throwable)m); + logger.debug("", (Throwable) m); } else { - logger.fine(String.valueOf(m)); + logger.debug(String.valueOf(m)); } } @@ -137,7 +82,7 @@ public void debug(Object m) { * @param t */ public void debug(Object m, Throwable t) { - logger.log(Level.FINE, String.valueOf(m), t); + logger.debug(String.valueOf(m), t); } /** @@ -146,7 +91,7 @@ public void debug(Object m, Throwable t) { */ public void info(Object m) { if (m instanceof Throwable) { - logger.log(Level.INFO, "", (Throwable)m); + logger.info("", (Throwable) m); } else { logger.info(String.valueOf(m)); } @@ -158,7 +103,7 @@ public void info(Object m) { * @param t */ public void info(Object m, Throwable t) { - logger.log(Level.INFO, String.valueOf(m), t); + logger.info(String.valueOf(m), t); } /** @@ -167,9 +112,9 @@ public void info(Object m, Throwable t) { */ public void warn(Object m) { if (m instanceof Throwable) { - logger.log(Level.WARNING, "", (Throwable)m); + logger.warn("", (Throwable) m); } else { - logger.warning(String.valueOf(m)); + logger.warn(String.valueOf(m)); } } @@ -179,7 +124,7 @@ public void warn(Object m) { * @param t */ public void warn(Object m, Throwable t) { - logger.log(Level.WARNING, String.valueOf(m), t); + logger.warn(String.valueOf(m), t); } /** @@ -188,9 +133,9 @@ public void warn(Object m, Throwable t) { */ public void error(Object m) { if (m instanceof Throwable) { - logger.log(Level.SEVERE, "", (Throwable)m); + logger.error("", (Throwable) m); } else { - logger.warning(String.valueOf(m)); + logger.error(String.valueOf(m)); } } @@ -200,7 +145,7 @@ public void error(Object m) { * @param t */ public void error(Object m, Throwable t) { - logger.log(Level.SEVERE, String.valueOf(m), t); + logger.error(String.valueOf(m), t); } } diff --git a/parquet-encoding/pom.xml b/parquet-encoding/pom.xml index 7765535893..f8723741b3 100644 --- a/parquet-encoding/pom.xml +++ b/parquet-encoding/pom.xml @@ -47,6 +47,13 @@ 1.5 compile + + + org.slf4j + slf4j-simple + ${slf4j.version} + test + diff --git a/parquet-hadoop/pom.xml b/parquet-hadoop/pom.xml index 2f2e932f72..4c4318212f 100644 --- a/parquet-hadoop/pom.xml +++ b/parquet-hadoop/pom.xml @@ -52,12 +52,6 @@ ${hadoop.version} provided - - log4j - log4j - ${log4j.version} - provided - org.apache.parquet parquet-jackson @@ -73,12 +67,6 @@ jackson-core-asl ${jackson.version} - - com.google.guava - guava - 11.0 - test - org.xerial.snappy snappy-java @@ -86,6 +74,18 @@ jar compile + + commons-pool + commons-pool + 1.5.4 + + + + com.google.guava + guava + 11.0 + test + org.mockito mockito-all @@ -93,9 +93,10 @@ test - commons-pool - commons-pool - 1.5.4 + org.slf4j + slf4j-simple + ${slf4j.version} + test diff --git a/parquet-pig/pom.xml b/parquet-pig/pom.xml index afab22dcbb..9b6371e251 100644 --- a/parquet-pig/pom.xml +++ b/parquet-pig/pom.xml @@ -79,12 +79,6 @@ jackson-core-asl ${jackson.version} - - log4j - log4j - ${log4j.version} - provided - org.apache.parquet parquet-column @@ -110,6 +104,12 @@ 11.0 test + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + test + diff --git a/parquet-protobuf/pom.xml b/parquet-protobuf/pom.xml index 55c38fe082..b3e4e501f9 100644 --- a/parquet-protobuf/pom.xml +++ b/parquet-protobuf/pom.xml @@ -76,6 +76,12 @@ ${hadoop.version} provided + + org.slf4j + slf4j-simple + ${slf4j.version} + test + diff --git a/parquet-scala/pom.xml b/parquet-scala/pom.xml index 9b842e1c50..38ceb1b1fe 100644 --- a/parquet-scala/pom.xml +++ b/parquet-scala/pom.xml @@ -64,6 +64,12 @@ 2.2.1 test + + org.slf4j + slf4j-simple + ${slf4j.version} + test + diff --git a/parquet-scrooge/pom.xml b/parquet-scrooge/pom.xml index 244302db8f..7e587f1e7f 100644 --- a/parquet-scrooge/pom.xml +++ b/parquet-scrooge/pom.xml @@ -66,12 +66,6 @@ jackson-mapper-asl ${jackson.version} - - log4j - log4j - ${log4j.version} - provided - org.apache.parquet parquet-column diff --git a/parquet-thrift/pom.xml b/parquet-thrift/pom.xml index fd4668bded..2583870c9e 100644 --- a/parquet-thrift/pom.xml +++ b/parquet-thrift/pom.xml @@ -78,12 +78,6 @@ jackson-core-asl ${jackson.version} - - log4j - log4j - ${log4j.version} - provided - org.apache.parquet parquet-column @@ -121,6 +115,12 @@ ${thrift.version} provided + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + test + diff --git a/parquet-tools/pom.xml b/parquet-tools/pom.xml index e7cfbb7f91..5d3f7c958a 100644 --- a/parquet-tools/pom.xml +++ b/parquet-tools/pom.xml @@ -72,6 +72,11 @@ guava 11.0 + + org.slf4j + slf4j-log4j12 + ${slf4j.version} + diff --git a/pom.xml b/pom.xml index c769ad3696..3588de567d 100644 --- a/pom.xml +++ b/pom.xml @@ -80,7 +80,6 @@ 1.1.0 2.5.3 2.3.0-incubating - 1.2.17 1.7.0 thrift 2.10.4 @@ -352,6 +351,16 @@ 2.10 -Xmx512m + + + info + true + YYYY-MM-dd HH:mm:ss + false + true + **/benchmark/*.java From 89257e8c6137a917e59b532331b51c92ea204d45 Mon Sep 17 00:00:00 2001 From: Ryan Blue Date: Tue, 8 Dec 2015 10:18:59 -0800 Subject: [PATCH 2/2] PARQUET-305: Remove deprecation annotations on Log. --- parquet-common/src/main/java/org/apache/parquet/Log.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/parquet-common/src/main/java/org/apache/parquet/Log.java b/parquet-common/src/main/java/org/apache/parquet/Log.java index 1774ee3b48..e05465b559 100644 --- a/parquet-common/src/main/java/org/apache/parquet/Log.java +++ b/parquet-common/src/main/java/org/apache/parquet/Log.java @@ -34,7 +34,6 @@ * @author Julien Le Dem * */ -@Deprecated public class Log { /** @@ -53,7 +52,6 @@ public class Log { * @return the corresponding logger * @deprecated will be removed in 2.0.0; use org.slf4j.LoggerFactory instead. */ - @Deprecated public static Log getLog(Class c) { return new Log(c); }