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); + } + } }
