Changed logger implementation from log4j to slf4j w/ logback
diff --git a/conf/logback.xml b/conf/logback.xml
new file mode 100644
index 0000000..91004fb
--- /dev/null
+++ b/conf/logback.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<configuration>
+
+ <!-- Direct log messages to ./drill.log.timestamp file -->
+ <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
+ <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+ <fileNamePattern>logs/drill.log.%d{yyyy-MM-dd-HH}</fileNamePattern>
+ </rollingPolicy>
+ <encoder>
+ <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n</pattern>
+ </encoder>
+ </appender>
+
+ <!-- Direct log messages to stdout -->
+ <appender name="Drill" class="ch.qos.logback.core.ConsoleAppender">
+ <Target>System.out</Target>
+ <encoder>
+ <pattern>%m%n</pattern>
+ </encoder>
+ </appender>
+
+ <!-- Direct log messages to stdout -->
+ <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
+ <Target>System.out</Target>
+ <encoder>
+ <pattern>%m%n</pattern>
+ </encoder>
+ </appender>
+
+
+ <logger name="org.apache.zookeeper" level="WARN"/>
+
+ <logger name="DrillTestLogger" additivity="false" level="INFO">
+ <appender-ref ref="file"/>
+ <appender-ref ref="Drill"/>
+ </logger>
+
+ <logger name="org.apache.curator" level="WARN"/>
+
+ <!-- Root logger option -->
+ <root level="ERROR">
+ <appender-ref ref="stdout"/>
+ </root>
+
+</configuration>
diff --git a/framework/pom.xml b/framework/pom.xml
index e57a178..5bc6536 100644
--- a/framework/pom.xml
+++ b/framework/pom.xml
@@ -7,7 +7,8 @@
<version>1.0.0-SNAPSHOT</version>
<properties>
<testng.version>6.4</testng.version>
- <log4j.version>1.2.17</log4j.version>
+ <slf4j.version>1.7.26</slf4j.version>
+ <logback.version>1.2.9</logback.version>
<jackson.version>2.10.0</jackson.version>
<guava.version>30.1.1-jre</guava.version>
<drill.version>2.0.0-SNAPSHOT</drill.version>
@@ -38,21 +39,46 @@
<groupId>org.ojai</groupId>
<artifactId>ojai</artifactId>
<version>1.1</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.14</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ </exclusion>
+ <exclusion>
+ <artifactId>log4j</artifactId>
+ <groupId>log4j</groupId>
+ </exclusion>
+ </exclusions>
</dependency>
<dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>${log4j.version}</version>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
</dependency>
<dependency>
- <groupId>log4j</groupId>
- <artifactId>apache-log4j-extras</artifactId>
- <version>${log4j.version}</version>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-classic</artifactId>
+ <version>${logback.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>ch.qos.logback</groupId>
+ <artifactId>logback-core</artifactId>
+ <version>${logback.version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
@@ -93,6 +119,10 @@
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
+ <artifactId>log4j</artifactId>
+ <groupId>log4j</groupId>
+ </exclusion>
+ <exclusion>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
</exclusion>
diff --git a/framework/src/main/java/org/apache/drill/test/framework/ConnectionPool.java b/framework/src/main/java/org/apache/drill/test/framework/ConnectionPool.java
index 6eca059..e5d5705 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/ConnectionPool.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/ConnectionPool.java
@@ -19,7 +19,9 @@
import com.google.common.collect.Queues;
import com.google.common.annotations.VisibleForTesting;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
@@ -29,7 +31,7 @@
import java.util.Queue;
public class ConnectionPool implements AutoCloseable {
- private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+ private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
private final Map<String, Queue<Connection>> connections;
private Properties connectionProperties;
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DBMetaData.java b/framework/src/main/java/org/apache/drill/test/framework/DBMetaData.java
index d3b883b..9d643c2 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DBMetaData.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DBMetaData.java
@@ -17,17 +17,19 @@
*/
package org.apache.drill.test.framework;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.sql.SQLException;
import java.sql.DatabaseMetaData;
-import org.apache.log4j.Logger;
/**
* Retrieves DataBase MetaData.
*/
public class DBMetaData {
- private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+ private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
private DatabaseMetaData md = null;
public DBMetaData(DatabaseMetaData md) {
this.md = md;
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillRMConfig.java b/framework/src/main/java/org/apache/drill/test/framework/DrillRMConfig.java
index 3c97fc8..f5aef85 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillRMConfig.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillRMConfig.java
@@ -9,7 +9,8 @@
import com.fasterxml.jackson.databind.ObjectMapper;
import com.typesafe.config.ConfigFactory;
import com.typesafe.config.ConfigRenderOptions;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
@@ -24,7 +25,7 @@
* Represents a Drill RM Resource Pool configuration.
*/
public class DrillRMConfig implements DrillConfigRenderer {
- private static final Logger LOG = Logger.getLogger(DrillRMConfig.class);
+ private static final Logger LOG = LoggerFactory.getLogger(DrillRMConfig.class);
//Resource Pool Configurations
public static final String RESOURCE_POOL_NAME_KEY = "pool_name";
public static final String MEMORY_KEY = "memory";
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillTestJdbc.java b/framework/src/main/java/org/apache/drill/test/framework/DrillTestJdbc.java
index 18e3107..701e25b 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillTestJdbc.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillTestJdbc.java
@@ -20,10 +20,11 @@
import com.google.common.base.Stopwatch;
import com.google.common.collect.Lists;
import org.apache.drill.test.framework.TestCaseModeler.TestMatrix;
+import org.apache.drill.test.framework.TestVerifier.PlanVerificationException;
import org.apache.drill.test.framework.TestVerifier.TestStatus;
import org.apache.drill.test.framework.TestVerifier.VerificationException;
-import org.apache.drill.test.framework.TestVerifier.PlanVerificationException;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.BufferedWriter;
import java.io.File;
@@ -33,14 +34,13 @@
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
-import java.sql.Types;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.concurrent.atomic.AtomicBoolean;
public class DrillTestJdbc implements DrillTest {
- private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+ private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
private static final String LINE_BREAK = "------------------------------------------------------------------------";
private ConnectionPool connectionPool;
@@ -248,7 +248,7 @@
}
LOG.debug("Result set data types:");
- LOG.debug(Utils.getTypesInStrings(columnTypes));
+ LOG.debug(Utils.getTypesInStrings(columnTypes).toString());
if (resultSet != null) {
while (resultSet.next()) {
@@ -258,7 +258,7 @@
}
}
} catch (IllegalArgumentException | IllegalAccessException | IOException e1) {
- LOG.warn(e1);
+ LOG.warn(e1.getMessage(), e1);
} finally {
doneProcessingResultSet.set(true);
if (resultSet != null) {
@@ -322,7 +322,7 @@
: new VerificationException(exception + "\n" + msg);
}
} catch (IllegalArgumentException | IllegalAccessException e1) {
- LOG.warn(e1);
+ LOG.warn(e1.getMessage(), e1);
} finally {
if (resultSet != null) resultSet.close();
if (writer != null) writer.close();
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillTestOdbc.java b/framework/src/main/java/org/apache/drill/test/framework/DrillTestOdbc.java
index b1830e5..220db6f 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillTestOdbc.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillTestOdbc.java
@@ -23,7 +23,8 @@
import org.apache.drill.test.framework.TestVerifier.TestStatus;
import org.apache.drill.test.framework.TestVerifier.VerificationException;
import org.apache.drill.test.framework.TestVerifier.PlanVerificationException;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -42,7 +43,7 @@
import java.util.concurrent.atomic.AtomicBoolean;
public class DrillTestOdbc implements DrillTest{
- private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+ private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
private String query = null;
private String outputFilename;
private volatile TestStatus testStatus = TestStatus.PENDING;
diff --git a/framework/src/main/java/org/apache/drill/test/framework/DrillTestScript.java b/framework/src/main/java/org/apache/drill/test/framework/DrillTestScript.java
index 1933f42..664ecf6 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/DrillTestScript.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/DrillTestScript.java
@@ -18,28 +18,15 @@
package org.apache.drill.test.framework;
import com.google.common.base.Stopwatch;
-import com.google.common.collect.Lists;
import org.apache.drill.test.framework.TestCaseModeler.TestMatrix;
import org.apache.drill.test.framework.TestVerifier.TestStatus;
-import org.apache.drill.test.framework.TestVerifier.VerificationException;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
import java.io.IOException;
-import java.sql.Connection;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.sql.Types;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.atomic.AtomicBoolean;
public class DrillTestScript implements DrillTest {
- private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+ private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
private String query;
private String outputFilename;
private volatile TestStatus testStatus = TestStatus.PENDING;
@@ -77,7 +64,7 @@
try {
cmdConsOut = Utils.execCmd(command);
- LOG.info(cmdConsOut);
+ LOG.info(cmdConsOut.toString());
switch (cmdConsOut.exitCode) {
case 0:
diff --git a/framework/src/main/java/org/apache/drill/test/framework/TestDriver.java b/framework/src/main/java/org/apache/drill/test/framework/TestDriver.java
index c7998ba..b0337a5 100644
--- a/framework/src/main/java/org/apache/drill/test/framework/TestDriver.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/TestDriver.java
@@ -30,9 +30,10 @@
import org.apache.hadoop.fs.FileUtil;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.mapred.FileAlreadyExistsException;
-import org.apache.log4j.Logger;
import org.ojai.Document;
import org.ojai.json.Json;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.BufferedWriter;
@@ -59,7 +60,7 @@
import java.util.Set;
public class TestDriver {
- private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+ private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
private Connection connection = null;
public static String commitId, version;
private String[] injectionKeys = {"DRILL_VERSION"};
@@ -680,7 +681,7 @@
injections.put(injectionKeys[i], version);
break;
default:
- LOG.fatal("Injection parameter not recognized!");
+ LOG.error("Injection parameter not recognized!");
}
}
connectionPool.releaseConnection(connection);
@@ -1064,7 +1065,7 @@
CmdConsOut cmdConsOut;
try {
cmdConsOut = Utils.execCmd(command);
- LOG.debug(cmdConsOut);
+ LOG.debug(cmdConsOut.toString());
} catch (Exception e) {
cmdConsOut = new CmdConsOut();
cmdConsOut.cmd = command;
@@ -1131,7 +1132,7 @@
}
LOG.debug("Result set data types:");
- LOG.debug(Utils.getTypesInStrings(types));
+ LOG.debug(Utils.getTypesInStrings(types).toString());
if (resultSet != null) {
while (resultSet.next()) {
diff --git a/framework/src/main/java/org/apache/drill/test/framework/TestVerifier.java b/framework/src/main/java/org/apache/drill/test/framework/TestVerifier.java
index 57aedfb..62951ea 100755
--- a/framework/src/main/java/org/apache/drill/test/framework/TestVerifier.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/TestVerifier.java
@@ -42,7 +42,8 @@
import com.fasterxml.jackson.databind.JsonNode;
import com.google.common.collect.Lists;
import org.apache.drill.test.framework.TestCaseModeler.TestMatrix;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* Verification of drill tests by comparing actual query output with expected
@@ -50,7 +51,7 @@
*
*/
public class TestVerifier {
- private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+ private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
private static final int MAX_MISMATCH_SIZE = 10;
public TestStatus testStatus = TestStatus.PENDING;
private int mapSize = 0;
diff --git a/framework/src/main/java/org/apache/drill/test/framework/Utils.java b/framework/src/main/java/org/apache/drill/test/framework/Utils.java
index f01c6aa..7fbfb6e 100755
--- a/framework/src/main/java/org/apache/drill/test/framework/Utils.java
+++ b/framework/src/main/java/org/apache/drill/test/framework/Utils.java
@@ -72,7 +72,8 @@
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
@@ -86,7 +87,7 @@
*
*/
public class Utils {
- private static final Logger LOG = Logger.getLogger("DrillTestLogger");
+ private static final Logger LOG = LoggerFactory.getLogger("DrillTestLogger");
private static final Map<Integer, String> sqlTypes;
private static final Map<Integer, String> sqlNullabilities;
private static HttpClient client;
@@ -573,7 +574,7 @@
}
LOG.debug("Result set data types:");
- LOG.debug(Utils.getTypesInStrings(types));
+ LOG.debug(Utils.getTypesInStrings(types).toString());
stringBuffer.append(new ColumnList(types, columnLabels).toString()).append("\n");
while (resultSet.next()) {
diff --git a/framework/src/test/java/org/apache/drill/test/framework/DrillTestFrameworkUnitTests.java b/framework/src/test/java/org/apache/drill/test/framework/DrillTestFrameworkUnitTests.java
index 9ff2656..90a190d 100644
--- a/framework/src/test/java/org/apache/drill/test/framework/DrillTestFrameworkUnitTests.java
+++ b/framework/src/test/java/org/apache/drill/test/framework/DrillTestFrameworkUnitTests.java
@@ -4,7 +4,8 @@
import com.typesafe.config.ConfigFactory;
import org.apache.drill.exec.server.rest.profile.CoreOperatorType;
import org.apache.drill.test.framework.common.DrillJavaTestBase;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test;
@@ -26,7 +27,7 @@
@Test(groups = UNIT_GROUP)
public class DrillTestFrameworkUnitTests extends DrillJavaTestBase {
- private static final Logger LOG = Logger.getLogger(DrillTestFrameworkUnitTests.class);
+ private static final Logger LOG = LoggerFactory.getLogger(DrillTestFrameworkUnitTests.class);
@BeforeTest(alwaysRun = true)
@@ -185,7 +186,7 @@
List<CoreOperatorType> operators = profile.getOperatorsFromProfile();
Assert.assertTrue(operators.size() > 0,
"Number of operators in the profile should be greater than 0");
- operators.forEach(LOG::info);
+ operators.forEach(o -> LOG.info(o.name()));
} catch (Exception e) {
e.printStackTrace();
Assert.fail(e.getMessage());
diff --git a/framework/src/test/java/org/apache/drill/test/framework/common/DrillJavaTestBase.java b/framework/src/test/java/org/apache/drill/test/framework/common/DrillJavaTestBase.java
index 3bb7b1b..8c70f5c 100644
--- a/framework/src/test/java/org/apache/drill/test/framework/common/DrillJavaTestBase.java
+++ b/framework/src/test/java/org/apache/drill/test/framework/common/DrillJavaTestBase.java
@@ -4,7 +4,8 @@
import org.apache.drill.test.framework.ConnectionPool;
import org.apache.drill.test.framework.Utils;
import org.apache.drill.test.framework.ssh.DrillCluster;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.AfterSuite;
@@ -20,7 +21,7 @@
import java.util.Properties;
public class DrillJavaTestBase {
- private static final Logger LOG = Logger.getLogger(DrillJavaTestBase.class);
+ private static final Logger LOG = LoggerFactory.getLogger(DrillJavaTestBase.class);
protected ConnectionPool connectionPool;
protected DrillCluster drillCluster;
diff --git a/framework/src/test/java/org/apache/drill/test/framework/resourcemanagement/QueueSelectionTests.java b/framework/src/test/java/org/apache/drill/test/framework/resourcemanagement/QueueSelectionTests.java
index 169e469..875405d 100644
--- a/framework/src/test/java/org/apache/drill/test/framework/resourcemanagement/QueueSelectionTests.java
+++ b/framework/src/test/java/org/apache/drill/test/framework/resourcemanagement/QueueSelectionTests.java
@@ -4,7 +4,8 @@
import org.apache.drill.test.framework.*;
import org.apache.drill.test.framework.common.DrillJavaTestBase;
import org.apache.drill.test.framework.common.DrillTestNGDefaults;
-import org.apache.log4j.Logger;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.*;
@@ -23,7 +24,7 @@
@SuppressWarnings("Duplicates")
@Test(groups = FUNCTIONAL_GROUP)
public class QueueSelectionTests extends DrillJavaTestBase {
- private static final Logger LOG = Logger.getLogger(QueueSelectionTests.class);
+ private static final Logger LOG = LoggerFactory.getLogger(QueueSelectionTests.class);
@BeforeClass(alwaysRun = true, description = "Invoked before all tests in the class")
private void setup() throws IOException {