Repository: zeppelin
Updated Branches:
  refs/heads/master 9d4550a53 -> 18e75a3aa


ZEPPELIN-1187. Redirect output of the process running interpreter.sh to log4j

### What is this PR for?
For now the output of process running interpter.sh is lost, it would be nice to 
redirect it to log4j for debugging, especially debugging related with 
interpreter.sh

### What type of PR is it?
Improvement

### What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-1187

### How should this be tested?
Tested manully, here's the output in the log file of the process running 
interpreter.sh

```
INFO [2016-07-15 15:30:10,537] ({Exec Stream Pumper} 
RemoteInterpreterManagedProcess.java[processLine]:179) - Spark Command: 
/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/bin/java -cp 
/Users/jzhang/github/zeppelin/interpreter/spark/*:/Users/jzhang/github/zeppelin/zeppelin-interpreter/target/lib/*:/Users/jzhang/github/zeppelin/conf/:/Users/jzhang/github/zeppelin/conf/:/Users/jzhang/github/zeppelin/zeppelin-interpreter/target/classes/Users/jzhang/github/zeppelin/interpreter/spark/zeppelin-spark-0.7.0-SNAPSHOT.jar:/Users/jzhang/Java/lib/spark-1.6.1/conf/:/Users/jzhang/Java/lib/spark-1.6.1/assembly/target/scala-2.10/spark-assembly-1.6.1-hadoop2.6.0.jar:/Users/jzhang/Java/lib/spark-1.6.1/lib_managed/jars/datanucleus-api-jdo-3.2.6.jar:/Users/jzhang/Java/lib/spark-1.6.1/lib_managed/jars/datanucleus-core-3.2.10.jar:/Users/jzhang/Java/lib/spark-1.6.1/lib_managed/jars/datanucleus-rdbms-3.2.9.jar:/Users/jzhang/Java/lib/hadoop-2.7.2/etc/hadoop/
 -Xms1g -Xmx1g -Dfile.encoding=UTF
 -8 
-Dlog4j.configuration=file:///Users/jzhang/github/zeppelin/conf/log4j.properties
 
-Dzeppelin.log.file=/Users/jzhang/github/zeppelin/logs/zeppelin-interpreter-spark-jzhang-jzhangMBPr.local.log
 org.apache.spark.deploy.SparkSubmit --conf 
spark.driver.extraClassPath=::/Users/jzhang/github/zeppelin/interpreter/spark/*:/Users/jzhang/github/zeppelin/zeppelin-interpreter/target/lib/*::/Users/jzhang/github/zeppelin/conf:/Users/jzhang/github/zeppelin/conf:/Users/jzhang/github/zeppelin/zeppelin-interpreter/target/classes/Users/jzhang/github/zeppelin/interpreter/spark/zeppelin-spark-0.7.0-SNAPSHOT.jar
 --conf spark.driver.extraJavaOptions= -Dfile.encoding=UTF-8 
-Dlog4j.configuration=file:///Users/jzhang/github/zeppelin/conf/log4j.properties
 
-Dzeppelin.log.file=/Users/jzhang/github/zeppelin/logs/zeppelin-interpreter-spark-jzhang-jzhangMBPr.local.log
 --class org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer 
/Users/jzhang/github/zeppelin/interpreter/spark/zeppelin-spark-0.7.0-SNAPSHO
 T.jar 55592
 INFO [2016-07-15 15:30:10,537] ({Exec Stream Pumper} 
RemoteInterpreterManagedProcess.java[processLine]:179) - 
========================================
 INFO [2016-07-15 15:30:11,058] ({Exec Stream Pumper} 
RemoteInterpreterManagedProcess.java[processLine]:179) - SLF4J: Class path 
contains multiple SLF4J bindings.
```

Author: Jeff Zhang <[email protected]>

Closes #1190 from zjffdu/ZEPPELIN-1187 and squashes the following commits:

977f426 [Jeff Zhang] ZEPPELIN-1187. Redirect output of the process running 
interpreter.sh to log4j


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/18e75a3a
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/18e75a3a
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/18e75a3a

Branch: refs/heads/master
Commit: 18e75a3aa418db4125e786defe519c8b769d8b14
Parents: 9d4550a
Author: Jeff Zhang <[email protected]>
Authored: Fri Jul 15 15:36:22 2016 +0800
Committer: Jongyoul Lee <[email protected]>
Committed: Wed Jul 20 14:05:34 2016 +0900

----------------------------------------------------------------------
 .../remote/RemoteInterpreterManagedProcess.java   | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/18e75a3a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
----------------------------------------------------------------------
diff --git 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
index 098a9d4..eb34533 100644
--- 
a/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
+++ 
b/zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/remote/RemoteInterpreterManagedProcess.java
@@ -25,6 +25,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
+import java.io.OutputStream;
 import java.util.Map;
 
 /**
@@ -59,6 +60,7 @@ public class RemoteInterpreterManagedProcess extends 
RemoteInterpreterProcess
     this.env = env;
     this.interpreterDir = intpDir;
     this.localRepoDir = localRepoDir;
+
   }
 
   RemoteInterpreterManagedProcess(String intpRunner,
@@ -103,7 +105,7 @@ public class RemoteInterpreterManagedProcess extends 
RemoteInterpreterProcess
     cmdLine.addArgument(localRepoDir, false);
 
     executor = new DefaultExecutor();
-
+    executor.setStreamHandler(new PumpStreamHandler(new 
ProcessLogOutputStream(logger)));
     watchdog = new ExecuteWatchdog(ExecuteWatchdog.INFINITE_TIMEOUT);
     executor.setWatchdog(watchdog);
 
@@ -163,4 +165,18 @@ public class RemoteInterpreterManagedProcess extends 
RemoteInterpreterProcess
   public boolean isRunning() {
     return running;
   }
+
+  private static class ProcessLogOutputStream extends LogOutputStream {
+
+    private Logger logger;
+
+    public ProcessLogOutputStream(Logger logger) {
+      this.logger = logger;
+    }
+
+    @Override
+    protected void processLine(String s, int i) {
+      this.logger.debug(s);
+    }
+  }
 }

Reply via email to