You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by pt...@apache.org on 2015/06/10 02:59:56 UTC

[02/28] storm git commit: Revert "Merge branch 'STORM-469' of https://github.com/rekhajoshm/storm into STORM-469"

Revert "Merge branch 'STORM-469' of https://github.com/rekhajoshm/storm into STORM-469"

This reverts commit 9b56bc8064dda3c9eab8358dddfed5e60d614a03, reversing
changes made to 27a36066bd1ed21a6fed4b8b0fc71a543740e5b3.

Migrate from logback to log4j2


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/28558b34
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/28558b34
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/28558b34

Branch: refs/heads/0.10.x-branch
Commit: 28558b34c8be84a1288f290675fb34a71ed6203f
Parents: d66444c
Author: Derek Dagit <de...@yahoo-inc.com>
Authored: Fri May 15 14:30:34 2015 -0500
Committer: Kishor Patil <kp...@yahoo-inc.com>
Committed: Wed Jun 3 14:50:44 2015 +0000

----------------------------------------------------------------------
 bin/storm-config.cmd                            |  4 +-
 bin/storm.py                                    | 27 ++++---
 conf/log4j2.xml                                 | 32 ++++++++
 conf/logback.xml                                | 28 -------
 log4j2/cluster.xml                              | 76 +++++++++++++++++
 log4j2/worker.xml                               | 77 ++++++++++++++++++
 logback/cluster.xml                             | 85 --------------------
 logback/worker.xml                              | 41 ----------
 pom.xml                                         | 25 ++++--
 storm-core/pom.xml                              | 12 ++-
 .../src/clj/backtype/storm/daemon/logviewer.clj | 11 +--
 .../src/clj/backtype/storm/daemon/nimbus.clj    |  5 +-
 .../clj/backtype/storm/daemon/supervisor.clj    | 14 +++-
 .../src/clj/backtype/storm/daemon/worker.clj    |  2 +-
 storm-core/src/clj/backtype/storm/util.clj      |  9 ++-
 storm-core/src/jvm/backtype/storm/Config.java   | 11 +++
 .../src/jvm/backtype/storm/LogWriter.java       | 83 +++++++++++++++++++
 .../templates/component-page-template.html      |  2 +-
 .../templates/topology-page-template.html       |  4 +-
 .../test/clj/backtype/storm/logviewer_test.clj  |  8 +-
 .../test/clj/backtype/storm/supervisor_test.clj | 30 ++++++-
 storm-dist/binary/src/main/assembly/binary.xml  |  8 +-
 22 files changed, 397 insertions(+), 197 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/bin/storm-config.cmd
----------------------------------------------------------------------
diff --git a/bin/storm-config.cmd b/bin/storm-config.cmd
index e185495..6794023 100644
--- a/bin/storm-config.cmd
+++ b/bin/storm-config.cmd
@@ -110,7 +110,7 @@ if not %STORM_LOGBACK_CONFIGURATION_DIR% == nil (
 @rem
 
 if not defined STORM_LOGBACK_CONFIGURATION_FILE (
-  set STORM_LOGBACK_CONFIGURATION_FILE=%STORM_HOME%\logback\cluster.xml
+  set STORM_LOGBACK_CONFIGURATION_FILE=%STORM_HOME%\log4j2\cluster.xml
 )
 
 "%JAVA%" -client -Dstorm.options= -Dstorm.conf.file= -cp "%CLASSPATH%" backtype.storm.command.config_value java.library.path > %CMD_TEMP_FILE%
@@ -126,7 +126,7 @@ FOR /F "delims=" %%i in (%CMD_TEMP_FILE%) do (
 
 :storm_opts
  set STORM_OPTS=-Dstorm.options= -Dstorm.home=%STORM_HOME% -Djava.library.path=%JAVA_LIBRARY_PATH%;%JAVA_HOME%\bin;%JAVA_HOME%\lib;%JAVA_HOME%\jre\bin;%JAVA_HOME%\jre\lib
- set STORM_OPTS=%STORM_OPTS% -Dlogback.configurationFile=%STORM_LOGBACK_CONFIGURATION_FILE%
+ set STORM_OPTS=%STORM_OPTS% -Dlog4j.configurationFile=%STORM_LOGBACK_CONFIGURATION_FILE%
  set STORM_OPTS=%STORM_OPTS% -Dstorm.log.dir=%STORM_LOG_DIR%
  del /F %CMD_TEMP_FILE%
 

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/bin/storm.py
----------------------------------------------------------------------
diff --git a/bin/storm.py b/bin/storm.py
index 455a4c0..1f371b2 100755
--- a/bin/storm.py
+++ b/bin/storm.py
@@ -76,7 +76,7 @@ if (not os.path.isfile(os.path.join(USER_CONF_DIR, "storm.yaml"))):
 
 STORM_LIB_DIR = os.path.join(STORM_DIR, "lib")
 STORM_BIN_DIR = os.path.join(STORM_DIR, "bin")
-STORM_LOGBACK_CONF_DIR = os.path.join(STORM_DIR, "logback")
+STORM_LOG4J_CONF_DIR = os.path.join(STORM_DIR, "log4j2")
 
 init_storm_env()
 
@@ -326,12 +326,12 @@ def repl():
     cppaths = [CLUSTER_CONF_DIR]
     exec_storm_class("clojure.main", jvmtype="-client", extrajars=cppaths)
 
-def get_logback_conf_dir():
+def get_log4j_conf_dir():
     cppaths = [CLUSTER_CONF_DIR]
-    storm_logback_conf_dir = confvalue("storm.logback.conf.dir", cppaths)
-    if(storm_logback_conf_dir == None or storm_logback_conf_dir == "nil"):
-        storm_logback_conf_dir = STORM_LOGBACK_CONF_DIR
-    return storm_logback_conf_dir
+    storm_log4j_conf_dir = confvalue("storm.logback.conf.dir", cppaths)
+    if(storm_log4j_conf_dir == None or storm_log4j_conf_dir == "nil"):
+        storm_log4j_conf_dir = STORM_LOG4J_CONF_DIR
+    return storm_log4j_conf_dir
 
 def nimbus(klass="backtype.storm.daemon.nimbus"):
     """Syntax: [storm nimbus]
@@ -345,7 +345,8 @@ def nimbus(klass="backtype.storm.daemon.nimbus"):
     cppaths = [CLUSTER_CONF_DIR]
     jvmopts = parse_args(confvalue("nimbus.childopts", cppaths)) + [
         "-Dlogfile.name=nimbus.log",
-        "-Dlogback.configurationFile=" + os.path.join(get_logback_conf_dir(), "cluster.xml"),
+        "-Ddaemon.name=nimbus",
+        "-Dlog4j.configurationFile=" + os.path.join(get_log4j_conf_dir(), "cluster.xml"),
     ]
     exec_storm_class(
         klass,
@@ -365,7 +366,8 @@ def supervisor(klass="backtype.storm.daemon.supervisor"):
     cppaths = [CLUSTER_CONF_DIR]
     jvmopts = parse_args(confvalue("supervisor.childopts", cppaths)) + [
         "-Dlogfile.name=supervisor.log",
-        "-Dlogback.configurationFile=" + os.path.join(get_logback_conf_dir(), "cluster.xml"),
+        "-Ddaemon.name=supervisor",
+        "-Dlog4j.configurationFile=" + os.path.join(get_log4j_conf_dir(), "cluster.xml"),
     ]
     exec_storm_class(
         klass,
@@ -386,7 +388,8 @@ def ui():
     cppaths = [CLUSTER_CONF_DIR]
     jvmopts = parse_args(confvalue("ui.childopts", cppaths)) + [
         "-Dlogfile.name=ui.log",
-        "-Dlogback.configurationFile=" + os.path.join(get_logback_conf_dir(), "cluster.xml")
+        "-Ddaemon.name=ui",
+        "-Dlog4j.configurationFile=" + os.path.join(get_log4j_conf_dir(), "cluster.xml")
     ]
     exec_storm_class(
         "backtype.storm.ui.core",
@@ -407,7 +410,8 @@ def logviewer():
     cppaths = [CLUSTER_CONF_DIR]
     jvmopts = parse_args(confvalue("logviewer.childopts", cppaths)) + [
         "-Dlogfile.name=logviewer.log",
-        "-Dlogback.configurationFile=" + os.path.join(get_logback_conf_dir(), "cluster.xml")
+        "-Ddaemon.name=logviewer",
+        "-Dlog4j.configurationFile=" + os.path.join(get_log4j_conf_dir(), "cluster.xml")
     ]
     exec_storm_class(
         "backtype.storm.daemon.logviewer",
@@ -427,7 +431,8 @@ def drpc():
     cppaths = [CLUSTER_CONF_DIR]
     jvmopts = parse_args(confvalue("drpc.childopts", cppaths)) + [
         "-Dlogfile.name=drpc.log",
-        "-Dlogback.configurationFile=" + os.path.join(get_logback_conf_dir(), "cluster.xml")
+        "-Ddaemon.name=drpc",
+        "-Dlog4j.configurationFile=" + os.path.join(get_log4j_conf_dir(), "cluster.xml")
     ]
     exec_storm_class(
         "backtype.storm.daemon.drpc",

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/conf/log4j2.xml
----------------------------------------------------------------------
diff --git a/conf/log4j2.xml b/conf/log4j2.xml
new file mode 100644
index 0000000..cfc8330
--- /dev/null
+++ b/conf/log4j2.xml
@@ -0,0 +1,32 @@
+<?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 monitorInterval="60">
+  <Appenders>
+    <Console name="Console" target="SYSTEM_OUT">
+     <PatternLayout pattern="%-4r [%t] %-5p %c{1.} - %msg%n"/>
+    </Console>
+  </Appenders>
+  <Loggers>
+    <Logger name="org.apache.zookeeper" level="WARN"/>
+    <Root level="info">
+      <AppenderRef ref="Console"/>
+    </Root>
+  </Loggers>
+</configuration>
+

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/conf/logback.xml
----------------------------------------------------------------------
diff --git a/conf/logback.xml b/conf/logback.xml
deleted file mode 100644
index 7ccaae6..0000000
--- a/conf/logback.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0"?>
-<!--
- 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 scan="true" scanPeriod="30 seconds">
-  <appender name="A1" class="ch.qos.logback.core.ConsoleAppender">
-    <encoder>
-      <pattern>%-4r [%t] %-5p %c - %m%n</pattern>
-    </encoder>
-  </appender>
-  <logger name="org.apache.zookeeper" level="WARN"/>
-  <root level="INFO">
-    <appender-ref ref="A1"/>
-  </root>
-</configuration>

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/log4j2/cluster.xml
----------------------------------------------------------------------
diff --git a/log4j2/cluster.xml b/log4j2/cluster.xml
new file mode 100644
index 0000000..2301e21
--- /dev/null
+++ b/log4j2/cluster.xml
@@ -0,0 +1,76 @@
+<?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 monitorInterval="60">
+<properties>
+    <property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} %c{1.} [%p] %msg%n</property>
+    <property name="patternMetris">%d %-8r %m%n</property>
+</properties>
+<appenders>
+    <RollingFile name="A1"
+                 fileName="${sys:storm.home}/logs/${sys:logfile.name}"
+                 filePattern="${sys:storm.home}/logs/${sys:logfile.name}.%i">
+        <PatternLayout>
+            <pattern>${pattern}</pattern>
+        </PatternLayout>
+        <Policies>
+            <SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB -->
+            <DefaultRolloverStrategy max="9"/>
+        </Policies>
+    </RollingFile>
+    <RollingFile name="ACCESS"
+                 fileName="${sys:storm.home}/logs/access.log"
+                 filePattern="${sys:storm.home}/logs/access.log.%i">
+        <PatternLayout>
+            <pattern>${pattern}</pattern>
+        </PatternLayout>
+        <Policies>
+            <SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB -->
+            <DefaultRolloverStrategy max="9"/>
+        </Policies>
+    </RollingFile>
+    <RollingFile name="METRICS"
+                 fileName="${sys:storm.home}/logs/metrics.log"
+                 filePattern="${sys:storm.home}/logs/metrics.log.%i">
+        <PatternLayout>
+            <pattern>${patternMetris}</pattern>
+        </PatternLayout>
+        <Policies>
+            <SizeBasedTriggeringPolicy size="2 MB"/> <!-- Or every 100 MB -->
+            <DefaultRolloverStrategy max="9"/>
+        </Policies>
+    </RollingFile>
+    <Syslog name="syslog" format="RFC5424" host="localhost" port="514"
+            protocol="UDP" appName="[${sys:daemon.name}]" mdcId="mdc" includeMDC="true"
+            facility="LOCAL5" enterpriseNumber="18060" newLine="true" exceptionPattern="%rEx{full}"
+            messageId="[${sys:user.name}:S0]" id="storm"/>
+</appenders>
+<loggers>
+
+    <Logger name="backtype.storm.security.auth.authorizer" level="info">
+        <AppenderRef ref="ACCESS"/>
+    </Logger>
+    <Logger name="backtype.storm.metric.LoggingMetricsConsumer" level="info">
+        <AppenderRef ref="METRICS"/>
+    </Logger>
+    <root level="info"> <!-- We log everything -->
+        <appender-ref ref="A1"/>
+        <appender-ref ref="syslog"/>
+    </root>
+</loggers>
+</configuration>

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/log4j2/worker.xml
----------------------------------------------------------------------
diff --git a/log4j2/worker.xml b/log4j2/worker.xml
new file mode 100644
index 0000000..54d612c
--- /dev/null
+++ b/log4j2/worker.xml
@@ -0,0 +1,77 @@
+<?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 monitorInterval="60">
+<properties>
+    <property name="pattern">%d{yyyy-MM-dd HH:mm:ss.SSS} %c{1.} [%p] %msg%n</property>
+    <property name="patternNoTime">%msg%n</property>
+</properties>
+<appenders>
+    <RollingFile name="A1"
+                 fileName="${sys:storm.home}/logs/${sys:logfile.name}"
+                 filePattern="${sys:storm.home}/logs/${sys:logfile.name}.%i.gz">
+        <PatternLayout>
+            <pattern>${pattern}</pattern>
+        </PatternLayout>
+        <Policies>
+            <SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB -->
+            <DefaultRolloverStrategy max="9"/>
+        </Policies>
+    </RollingFile>
+    <RollingFile name="STDOUT"
+                 fileName="${sys:storm.home}/logs/${sys:logfile.name}.out"
+                 filePattern="${sys:storm.home}/logs/${sys:logfile.name}.out.%i.gz">
+        <PatternLayout>
+            <pattern>${patternNoTime}</pattern>
+        </PatternLayout>
+        <Policies>
+            <SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB -->
+            <DefaultRolloverStrategy max="4"/>
+        </Policies>
+    </RollingFile>
+    <RollingFile name="STDERR"
+                 fileName="${sys:storm.home}/logs/${sys:logfile.name}.err"
+                 filePattern="${sys:storm.home}/logs/${sys:logfile.name}.err.%i.gz">
+        <PatternLayout>
+            <pattern>${patternNoTime}</pattern>
+        </PatternLayout>
+        <Policies>
+            <SizeBasedTriggeringPolicy size="100 MB"/> <!-- Or every 100 MB -->
+            <DefaultRolloverStrategy max="4"/>
+        </Policies>
+    </RollingFile>
+    <Syslog name="syslog" format="RFC5424" host="localhost" port="514"
+        protocol="UDP" appName="[${sys:storm.id}:${sys:worker.port}]" mdcId="mdc" includeMDC="true"
+        facility="LOCAL5" enterpriseNumber="18060" newLine="true" exceptionPattern="%rEx{full}"
+        messageId="[${sys:user.name}:${sys:logging.sensitivity}]" id="storm"/>
+</appenders>
+<loggers>
+    <root level="info"> <!-- We log everything -->
+        <appender-ref ref="A1"/>
+        <appender-ref ref="syslog"/>
+    </root>
+    <Logger name="STDERR" level="INFO">
+        <appender-ref ref="STDERR"/>
+        <appender-ref ref="syslog"/>
+    </Logger>
+    <Logger name="STDOUT" level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="syslog"/>
+    </Logger>
+</loggers>
+</configuration>

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/logback/cluster.xml
----------------------------------------------------------------------
diff --git a/logback/cluster.xml b/logback/cluster.xml
deleted file mode 100644
index 487e119..0000000
--- a/logback/cluster.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<!--
- 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 scan="true" scanPeriod="60 seconds">
- <appender name="A1" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${storm.log.dir}/${logfile.name}</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-      <fileNamePattern>${storm.log.dir}/${logfile.name}.%i</fileNamePattern>
-      <minIndex>1</minIndex>
-      <maxIndex>9</maxIndex>
-    </rollingPolicy>
-
-    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-      <maxFileSize>100MB</maxFileSize>
-    </triggeringPolicy>
-
-    <encoder>
-      <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ} %c{1} [%p] %m%n</pattern>
-    </encoder>
- </appender>
-
- <appender name="ACCESS" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${storm.log.dir}/access.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-      <fileNamePattern>${storm.log.dir}/access.log.%i</fileNamePattern>
-      <minIndex>1</minIndex>
-      <maxIndex>9</maxIndex>
-    </rollingPolicy>
-
-    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-      <maxFileSize>100MB</maxFileSize>
-    </triggeringPolicy>
-
-    <encoder>
-      <pattern>%d{yyyy-MM-dd'T'HH:mm:ss.SSSZZ} %c{1} [%p] %m%n</pattern>
-    </encoder>
-  </appender>
-
-  <appender name="METRICS" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${storm.log.dir}/metrics.log</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-      <fileNamePattern>${storm.log.dir}/metrics.log.%i</fileNamePattern>
-      <minIndex>1</minIndex>
-      <maxIndex>9</maxIndex>
-    </rollingPolicy>
-
-    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-      <maxFileSize>2MB</maxFileSize>
-    </triggeringPolicy>
-
-    <encoder>
-      <pattern>%d %-8r %m%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="INFO">
-    <appender-ref ref="A1"/>
-  </root>
-
-  <logger name="backtype.storm.security.auth.authorizer" additivity="false">
-    <level value="INFO" />
-    <appender-ref ref="ACCESS" />
-  </logger>
-
-  <logger name="backtype.storm.metric.LoggingMetricsConsumer" additivity="false" >
-    <level value="INFO"/>
-    <appender-ref ref="METRICS"/>
-  </logger>
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/logback/worker.xml
----------------------------------------------------------------------
diff --git a/logback/worker.xml b/logback/worker.xml
deleted file mode 100644
index 3d9009e..0000000
--- a/logback/worker.xml
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0"?>
-<!--
- 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 scan="true" scanPeriod="60 seconds">
-  <appender name="A1" class="ch.qos.logback.core.rolling.RollingFileAppender">
-    <file>${storm.log.dir}/${logfile.name}</file>
-    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy">
-      <fileNamePattern>${storm.log.dir}/${logfile.name}.%i</fileNamePattern>
-      <minIndex>1</minIndex>
-      <maxIndex>9</maxIndex>
-    </rollingPolicy>
-
-    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
-      <maxFileSize>100MB</maxFileSize>
-    </triggeringPolicy>
-
-    <encoder>
-      <pattern>%d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n</pattern>
-    </encoder>
-  </appender>
-
-  <root level="INFO">
-    <appender-ref ref="A1"/>
-  </root>
-
-</configuration>

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 2e0c898..0b931b3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -208,9 +208,9 @@
         <disruptor.version>2.10.1</disruptor.version>
         <jgrapht.version>0.9.0</jgrapht.version>
         <guava.version>16.0.1</guava.version>
-        <logback-classic.version>1.0.13</logback-classic.version>
-        <log4j-over-slf4j.version>1.6.6</log4j-over-slf4j.version>
         <netty.version>3.9.0.Final</netty.version>
+        <log4j-over-slf4j.version>1.6.6</log4j-over-slf4j.version>
+        <log4j.version>2.1</log4j.version>
         <clojure.tools.nrepl.version>0.2.3</clojure.tools.nrepl.version>
         <clojure-complete.version>0.2.3</clojure-complete.version>
         <mockito.version>1.9.5</mockito.version>
@@ -467,9 +467,24 @@
                 <version>${guava.version}</version>
             </dependency>
             <dependency>
-                <groupId>ch.qos.logback</groupId>
-                <artifactId>logback-classic</artifactId>
-                <version>${logback-classic.version}</version>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-api</artifactId>
+                <version>${log4j.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-slf4j-impl</artifactId>
+                <version>${log4j.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.apache.logging.log4j</groupId>
+                <artifactId>log4j-core</artifactId>
+                <version>${log4j.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-log4j12</artifactId>
+                <version>${log4j-over-slf4j.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.slf4j</groupId>

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/pom.xml
----------------------------------------------------------------------
diff --git a/storm-core/pom.xml b/storm-core/pom.xml
index 765a1dd..18992f2 100644
--- a/storm-core/pom.xml
+++ b/storm-core/pom.xml
@@ -200,8 +200,16 @@
             <artifactId>guava</artifactId>
         </dependency>
         <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-slf4j-impl</artifactId>
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/logviewer.clj b/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
index 1c24440..8a38df6 100644
--- a/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/logviewer.clj
@@ -21,9 +21,10 @@
   (:use [backtype.storm config util log timer])
   (:use [backtype.storm.ui helpers])
   (:import [org.slf4j LoggerFactory])
-  (:import [ch.qos.logback.classic Logger])
-  (:import [ch.qos.logback.core FileAppender])
   (:import [java.io File FileFilter FileInputStream])
+  (:import [org.apache.logging.log4j LogManager])
+  (:import [org.apache.logging.log4j.core Appender LoggerContext])
+  (:import [org.apache.logging.log4j.core.appender RollingFileAppender])
   (:import [org.yaml.snakeyaml Yaml]
            [org.yaml.snakeyaml.constructor SafeConstructor])
   (:import [backtype.storm.ui InvalidRequestException]
@@ -210,9 +211,9 @@
 
 Note that if anything goes wrong, this will throw an Error and exit."
   [appender-name]
-  (let [appender (.getAppender (LoggerFactory/getLogger Logger/ROOT_LOGGER_NAME) appender-name)]
-    (if (and appender-name appender (instance? FileAppender appender))
-      (.getParent (File. (.getFile appender)))
+  (let [appender (.getAppender (.getConfiguration (LogManager/getContext)) appender-name)]
+    (if (and appender-name appender (instance? RollingFileAppender appender))
+      (.getParent (File. (.getFileName appender)))
       (throw
        (RuntimeException. "Log viewer could not find configured appender, or the appender is not a FileAppender. Please check that the appender name configured in storm and logback agree.")))))
 

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/nimbus.clj b/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
index e079ba4..f23d9b1 100644
--- a/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/nimbus.clj
@@ -1089,7 +1089,10 @@
             (when (and (Utils/isZkAuthenticationConfiguredStormServer conf)
                        (not (Utils/isZkAuthenticationConfiguredTopology storm-conf)))
                 (throw (IllegalArgumentException. "The cluster is configured for zookeeper authentication, but no payload was provided.")))
-            (log-message "Received topology submission for " storm-name " with conf " storm-conf)
+            (log-message "Received topology submission for "
+                         storm-name
+                         " with conf "
+                         (redact-value storm-conf STORM-ZOOKEEPER-TOPOLOGY-AUTH-PAYLOAD))
             ;; lock protects against multiple topologies being submitted at once and
             ;; cleanup thread killing topology in b/w assignment and starting the topology
             (locking (:submit-lock nimbus)

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/supervisor.clj b/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
index 0517294..41533df 100644
--- a/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/supervisor.clj
@@ -660,7 +660,7 @@
           storm-log-dir (or (System/getProperty "storm.log.dir") (str storm-home file-path-separator "logs"))
           storm-conf (read-storm-config)
           storm-log-conf-dir (storm-conf "storm.logback.conf.dir")
-          storm-logback-conf-dir (or storm-log-conf-dir (str storm-home file-path-separator "logback"))
+          storm-logback-conf-dir (or storm-log-conf-dir (str storm-home file-path-separator "log4j2"))
           stormroot (supervisor-stormdist-root conf storm-id)
           jlp (jlp stormroot conf)
           stormjar (supervisor-stormjar-path stormroot)
@@ -674,6 +674,7 @@
           top-gc-opts (storm-conf TOPOLOGY-WORKER-GC-CHILDOPTS)
           gc-opts (substitute-childopts (if top-gc-opts top-gc-opts (conf WORKER-GC-CHILDOPTS)) worker-id storm-id port)
           user (storm-conf TOPOLOGY-SUBMITTER-USER)
+          logging-sensitivity (storm-conf TOPOLOGY-LOGGING-SENSITIVITY "S3")
           logfilename (logs-filename storm-id port)
           worker-childopts (when-let [s (conf WORKER-CHILDOPTS)]
                              (substitute-childopts s worker-id storm-id port))
@@ -683,6 +684,14 @@
                                         (merge env {"LD_LIBRARY_PATH" jlp})
                                         {"LD_LIBRARY_PATH" jlp})
           command (concat
+                    [(java-cmd) "-cp" classpath 
+                     (str "-Dlogfile.name=" logfilename)
+                     (str "-Dstorm.home=" storm-home)
+                     (str "-Dstorm.id=" storm-id)
+                     (str "-Dworker.id=" worker-id)
+                     (str "-Dworker.port=" port)
+                     (str "-Dlog4j.configurationFile=" storm-logback-conf-dir file-path-separator "worker.xml")
+                     "backtype.storm.LogWriter"]
                     [(java-cmd) "-server"]
                     worker-childopts
                     topo-worker-childopts
@@ -693,7 +702,8 @@
                      (str "-Dstorm.conf.file=" storm-conf-file)
                      (str "-Dstorm.options=" storm-options)
                      (str "-Dstorm.log.dir=" storm-log-dir)
-                     (str "-Dlogback.configurationFile=" storm-logback-conf-dir file-path-separator "worker.xml")
+                     (str "-Dlogging.sensitivity=" logging-sensitivity)
+                     (str "-Dlog4j.configurationFile=" storm-logback-conf-dir file-path-separator "worker.xml")
                      (str "-Dstorm.id=" storm-id)
                      (str "-Dworker.id=" worker-id)
                      (str "-Dworker.port=" port)

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/clj/backtype/storm/daemon/worker.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/daemon/worker.clj b/storm-core/src/clj/backtype/storm/daemon/worker.clj
index 038c20b..38ec381 100644
--- a/storm-core/src/clj/backtype/storm/daemon/worker.clj
+++ b/storm-core/src/clj/backtype/storm/daemon/worker.clj
@@ -518,7 +518,7 @@
     (schedule-recurring (:refresh-connections-timer worker) 0 (conf TASK-REFRESH-POLL-SECS) refresh-connections)
     (schedule-recurring (:refresh-active-timer worker) 0 (conf TASK-REFRESH-POLL-SECS) (partial refresh-storm-active worker))
 
-    (log-message "Worker has topology config " (:storm-conf worker))
+    (log-message "Worker has topology config " (redact-value (:storm-conf worker) STORM-ZOOKEEPER-TOPOLOGY-AUTH-PAYLOAD))
     (log-message "Worker " worker-id " for storm " storm-id " on " assignment-id ":" port " has finished loading")
     ret
     ))))))

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/clj/backtype/storm/util.clj
----------------------------------------------------------------------
diff --git a/storm-core/src/clj/backtype/storm/util.clj b/storm-core/src/clj/backtype/storm/util.clj
index 70e166a..3fd9f2a 100644
--- a/storm-core/src/clj/backtype/storm/util.clj
+++ b/storm-core/src/clj/backtype/storm/util.clj
@@ -1026,7 +1026,7 @@
 (defn logs-metadata-filename [storm-id port]
   (str (logs-rootname storm-id port) ".yaml"))
 
-(def worker-log-filename-pattern #"((.*-\d+-\d+)-worker-(\d+)).log")
+(def worker-log-filename-pattern #"^((.*-\d+-\d+)-worker-(\d+))\.log")
 
 (defn get-log-metadata-file
   ([fname]
@@ -1058,3 +1058,10 @@
               (log-error err "Received error in main thread.. terminating server...")
               (.exit (Runtime/getRuntime) -2))))))))
 
+(defn redact-value
+  "Hides value for k in coll for printing coll safely"
+  [coll k]
+  (if (contains? coll k)
+    (assoc coll k (apply str (repeat (count (coll k)) "#")))
+    coll))
+

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/jvm/backtype/storm/Config.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/Config.java b/storm-core/src/jvm/backtype/storm/Config.java
index a881cb4..b7ee27c 100644
--- a/storm-core/src/jvm/backtype/storm/Config.java
+++ b/storm-core/src/jvm/backtype/storm/Config.java
@@ -1305,6 +1305,17 @@ public class Config extends HashMap<String, Object> {
     public static final Object TOPOLOGY_SHELLBOLT_MAX_PENDING_SCHEMA = ConfigValidation.IntegerValidator;
 
     /**
+     * Topology central logging sensitivity to determine who has access to logs in central logging system.
+     * The possible values are:
+     *   S0 - Public (open to all users on grid)
+     *   S1 - Restricted
+     *   S2 - Confidential
+     *   S3 - Secret (default.)
+     */
+    public static final String TOPOLOGY_LOGGING_SENSITIVITY="topology.logging.sensitivity";
+    public static final Object TOPOLOGY_LOGGING_SENSITIVITY_SCHEMA = String.class;
+
+    /**
      * The root directory in ZooKeeper for metadata about TransactionalSpouts.
      */
     public static final String TRANSACTIONAL_ZOOKEEPER_ROOT="transactional.zookeeper.root";

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/jvm/backtype/storm/LogWriter.java
----------------------------------------------------------------------
diff --git a/storm-core/src/jvm/backtype/storm/LogWriter.java b/storm-core/src/jvm/backtype/storm/LogWriter.java
new file mode 100644
index 0000000..b0857e8
--- /dev/null
+++ b/storm-core/src/jvm/backtype/storm/LogWriter.java
@@ -0,0 +1,83 @@
+/**
+ * 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.
+ */
+package backtype.storm;
+
+import java.io.BufferedReader;
+import java.io.InputStreamReader;
+import java.io.InputStream;
+import java.io.IOException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * Launch a sub process and write files out to logs.
+ */
+public class LogWriter extends Thread {
+    private Logger logger;
+    private BufferedReader in;
+
+    public LogWriter(InputStream in, Logger logger) {
+        this.in = new BufferedReader(new InputStreamReader(in));
+        this.logger = logger;
+    }
+
+    public void run() {
+        Logger logger = this.logger;
+        BufferedReader in = this.in;
+        String line = null;
+        try {
+            while ((line = in.readLine()) != null) {
+                logger.info(line);
+            }
+        } catch (IOException e) {
+            logger.error("Internal ERROR", e);
+        } finally {
+            try {
+                in.close();
+            } catch (IOException e) {
+                logger.error("Internal ERROR", e);
+            }
+        }
+    }
+
+    public void close() throws Exception {
+        this.join();
+    }
+
+    public static void main(String [] args) throws Exception {
+        ProcessBuilder pb = new ProcessBuilder(args);
+        Process p = pb.start();
+        LogWriter err = null;
+        LogWriter in = null;
+        int ret = -1;
+        try {
+            Logger logger = LoggerFactory.getLogger("STDERR");
+            err = new LogWriter(p.getErrorStream(), logger);
+            err.start();
+            in = new LogWriter(p.getInputStream(), logger);
+            in.start();
+            ret = p.waitFor();
+        } finally {
+          if (err != null) err.close();
+          if (in != null) in.close();
+        }
+        System.exit(ret);
+    }
+}

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/ui/public/templates/component-page-template.html
----------------------------------------------------------------------
diff --git a/storm-core/src/ui/public/templates/component-page-template.html b/storm-core/src/ui/public/templates/component-page-template.html
index 4882e1e..440628a 100644
--- a/storm-core/src/ui/public/templates/component-page-template.html
+++ b/storm-core/src/ui/public/templates/component-page-template.html
@@ -479,7 +479,7 @@
         <td>{{errorHost}}</td>
         <td><a href="{{errorWorkerLogLink}}">{{errorPort}}</a></td>
         <td>
-          <span id="{{errorLapsedSecs}}" class="errorSpan"><a href="{{errorWorkerLogLink}}">{{error}}</a></span>
+          <span id="{{errorLapsedSecs}}" class="errorSpan">{{error}}</span>
         </td>
       </tr>
       {{/componentErrors}}

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/src/ui/public/templates/topology-page-template.html
----------------------------------------------------------------------
diff --git a/storm-core/src/ui/public/templates/topology-page-template.html b/storm-core/src/ui/public/templates/topology-page-template.html
index da7929c..ddf89b7 100644
--- a/storm-core/src/ui/public/templates/topology-page-template.html
+++ b/storm-core/src/ui/public/templates/topology-page-template.html
@@ -242,7 +242,7 @@
         <td>{{errorHost}}</td>
         <td><a href="{{errorWorkerLogLink}}">{{errorPort}}</a></td>
         <td>
-          <span id="{{errorLapsedSecs}}" class="errorSpan"><a href="{{errorWorkerLogLink}}">{{lastError}}</a></span>
+          <span id="{{errorLapsedSecs}}" class="errorSpan">{{lastError}}</span>
         </td>
         {{/spouts}}
     </tbody>
@@ -331,7 +331,7 @@
         <td>{{errorHost}}</td>
         <td><a href="{{errorWorkerLogLink}}">{{errorPort}}</a></td>
         <td>
-          <span id="{{errorLapsedSecs}}" class="errorSpan"><a href="{{errorWorkerLogLink}}">{{lastError}}</a></span>
+          <span id="{{errorLapsedSecs}}" class="errorSpan">{{lastError}}</span>
         </td>
         {{/bolts}}
     </tbody>

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/test/clj/backtype/storm/logviewer_test.clj
----------------------------------------------------------------------
diff --git a/storm-core/test/clj/backtype/storm/logviewer_test.clj b/storm-core/test/clj/backtype/storm/logviewer_test.clj
index 23fa0b9..a790ddf 100644
--- a/storm-core/test/clj/backtype/storm/logviewer_test.clj
+++ b/storm-core/test/clj/backtype/storm/logviewer_test.clj
@@ -91,10 +91,14 @@
 (deftest test-get-log-root->files-map
   (testing "returns map of root name to list of files"
     (let [files (vec (map #(java.io.File. %) ["log-1-2-worker-3.log"
+                                              "log-1-2-worker-3.log.1.gz"
+                                              "log-1-2-worker-3.log.err"
+                                              "log-1-2-worker-3.log.out"
+                                              "log-1-2-worker-3.log.out.1.gz"
                                               "log-1-2-worker-3.log.1"
                                               "log-2-4-worker-6.log.1"]))
-          expected {"log-1-2-worker-3" #{(files 0) (files 1)}
-                    "log-2-4-worker-6" #{(files 2)}}]
+          expected {"log-1-2-worker-3" #{(files 0) (files 1) (files 2) (files 3) (files 4) (files 5)}
+                    "log-2-4-worker-6" #{(files 6)}}]
       (is (= expected (logviewer/get-log-root->files-map files))))))
 
 (deftest test-identify-worker-log-files

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-core/test/clj/backtype/storm/supervisor_test.clj
----------------------------------------------------------------------
diff --git a/storm-core/test/clj/backtype/storm/supervisor_test.clj b/storm-core/test/clj/backtype/storm/supervisor_test.clj
index 4c029dd..dcb8dab 100644
--- a/storm-core/test/clj/backtype/storm/supervisor_test.clj
+++ b/storm-core/test/clj/backtype/storm/supervisor_test.clj
@@ -252,8 +252,18 @@
           mock-storm-id "fake-storm-id"
           mock-worker-id "fake-worker-id"
           mock-cp (str file-path-separator "base" class-path-separator file-path-separator "stormjar.jar")
+          mock-sensitivity "S3"
+          mock-cp "/base:/stormjar.jar"
           exp-args-fn (fn [opts topo-opts classpath]
-                       (concat [(supervisor/java-cmd) "-server"]
+                       (concat [(supervisor/java-cmd) "-cp" classpath 
+                               (str "-Dlogfile.name=" mock-storm-id "-worker-" mock-port ".log")
+                               "-Dstorm.home="
+                                (str "-Dstorm.id=" mock-storm-id)
+                                (str "-Dworker.id=" mock-worker-id)
+                                (str "-Dworker.port=" mock-port)
+                               "-Dlog4j.configurationFile=/log4j2/worker.xml"
+                               "backtype.storm.LogWriter"]
+                               [(supervisor/java-cmd) "-server"]
                                opts
                                topo-opts
                                ["-Djava.library.path="
@@ -262,7 +272,8 @@
                                 "-Dstorm.conf.file="
                                 "-Dstorm.options="
                                 (str "-Dstorm.log.dir=" file-path-separator "logs")
-                                (str "-Dlogback.configurationFile=" file-path-separator "logback" file-path-separator "worker.xml")
+                                (str "-Dlogging.sensitivity=" mock-sensitivity)
+                                (str "-Dlog4j.configurationFile=" file-path-separator "log4j2" file-path-separator "worker.xml")
                                 (str "-Dstorm.id=" mock-storm-id)
                                 (str "-Dworker.id=" mock-worker-id)
                                 (str "-Dworker.port=" mock-port)
@@ -364,6 +375,7 @@
     (let [mock-port "42"
           mock-storm-id "fake-storm-id"
           mock-worker-id "fake-worker-id"
+          mock-sensitivity "S3"
           mock-cp "mock-classpath'quote-on-purpose"
           storm-local (str "/tmp/" (UUID/randomUUID))
           worker-script (str storm-local "/workers/" mock-worker-id "/storm-worker-script.sh")
@@ -373,7 +385,16 @@
                       (str storm-local "/workers/" mock-worker-id)
                       worker-script]
           exp-script-fn (fn [opts topo-opts]
-                       (str "#!/bin/bash\n'export' 'LD_LIBRARY_PATH=';\n\nexec 'java' '-server'"
+                       (str "#!/bin/bash\n'export' 'LD_LIBRARY_PATH=';\n\nexec 'java'"
+                                " '-cp' 'mock-classpath'\"'\"'quote-on-purpose'"
+                                " '-Dlogfile.name=" mock-storm-id "-worker-" mock-port ".log'"
+                                " '-Dstorm.home='"
+                                " '-Dstorm.id=" mock-storm-id "'"
+                                " '-Dworker.id=" mock-worker-id "'"
+                                " '-Dworker.port=" mock-port "'"
+                                " '-Dlog4j.configurationFile=/log4j2/worker.xml'"
+                                " 'backtype.storm.LogWriter'"
+                                " 'java' '-server'"
                                 " " (shell-cmd opts)
                                 " " (shell-cmd topo-opts)
                                 " '-Djava.library.path='"
@@ -382,7 +403,8 @@
                                 " '-Dstorm.conf.file='"
                                 " '-Dstorm.options='"
                                 " '-Dstorm.log.dir=/logs'"
-                                " '-Dlogback.configurationFile=/logback/worker.xml'"
+                                " '-Dlogging.sensitivity=" mock-sensitivity "'"
+                                " '-Dlog4j.configurationFile=/log4j2/worker.xml'"
                                 " '-Dstorm.id=" mock-storm-id "'"
                                 " '-Dworker.id=" mock-worker-id "'"
                                 " '-Dworker.port=" mock-port "'"

http://git-wip-us.apache.org/repos/asf/storm/blob/28558b34/storm-dist/binary/src/main/assembly/binary.xml
----------------------------------------------------------------------
diff --git a/storm-dist/binary/src/main/assembly/binary.xml b/storm-dist/binary/src/main/assembly/binary.xml
index fef56bb..14d05f9 100644
--- a/storm-dist/binary/src/main/assembly/binary.xml
+++ b/storm-dist/binary/src/main/assembly/binary.xml
@@ -202,13 +202,13 @@
         </file>
         <!-- TODO this should be a generated file from "target" -->
         <file>
-            <source>${project.basedir}/../../logback/cluster.xml</source>
-            <outputDirectory>/logback</outputDirectory>
+            <source>${project.basedir}/../../log4j2/cluster.xml</source>
+            <outputDirectory>/log4j2</outputDirectory>
         </file>
 
         <file>
-            <source>${project.basedir}/../../logback/worker.xml</source>
-            <outputDirectory>/logback</outputDirectory>
+            <source>${project.basedir}/../../log4j2/worker.xml</source>
+            <outputDirectory>/log4j2</outputDirectory>
         </file>
 
         <file>