Allow to log the system properties with VersionLoggerListener. This feature is off by default.
Merged r1654159 from tomcat/trunk.
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc8.0.x/trunk@1654161 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/java/org/apache/catalina/startup/LocalStrings.properties b/java/org/apache/catalina/startup/LocalStrings.properties
index d29e542..147aac4 100644
--- a/java/org/apache/catalina/startup/LocalStrings.properties
+++ b/java/org/apache/catalina/startup/LocalStrings.properties
@@ -132,6 +132,7 @@
versionLoggerListener.vm.vendor =JVM Vendor: {0}
versionLoggerListener.catalina.base =CATALINA_BASE: {0}
versionLoggerListener.catalina.home =CATALINA_HOME: {0}
-versionLoggerListener.env =Environment variable: {0} = {1}
versionLoggerListener.arg =Command line argument: {0}
+versionLoggerListener.env =Environment variable: {0} = {1}
+versionLoggerListener.prop =System property: {0} = {1}
webAnnotationSet.invalidInjection=Invalid method resource injection annotation.
diff --git a/java/org/apache/catalina/startup/VersionLoggerListener.java b/java/org/apache/catalina/startup/VersionLoggerListener.java
index a9c4e3e..a4f944b 100644
--- a/java/org/apache/catalina/startup/VersionLoggerListener.java
+++ b/java/org/apache/catalina/startup/VersionLoggerListener.java
@@ -19,8 +19,8 @@
import java.lang.management.ManagementFactory;
import java.util.List;
import java.util.Map;
-import java.util.SortedSet;
-import java.util.TreeSet;
+import java.util.SortedMap;
+import java.util.TreeMap;
import org.apache.catalina.Lifecycle;
import org.apache.catalina.LifecycleEvent;
@@ -44,6 +44,7 @@
private boolean logArgs = true;
private boolean logEnv = false;
+ private boolean logProps = false;
public boolean getLogArgs() {
@@ -66,6 +67,16 @@
}
+ public boolean getLogProps() {
+ return logProps;
+ }
+
+
+ public void setLogProps(boolean logProps) {
+ this.logProps = logProps;
+ }
+
+
@Override
public void lifecycleEvent(LifecycleEvent event) {
if (Lifecycle.BEFORE_INIT_EVENT.equals(event.getType())) {
@@ -106,10 +117,19 @@
}
if (logEnv) {
- Map<String,String> envs = System.getenv();
- SortedSet<String> keys = new TreeSet<>(envs.keySet());
- for (String key : keys) {
- log.info(sm.getString("versionLoggerListener.env", key, envs.get(key)));
+ SortedMap<String, String> sortedMap = new TreeMap<>(System.getenv());
+ for (Map.Entry<String, String> e : sortedMap.entrySet()) {
+ log.info(sm.getString("versionLoggerListener.env", e.getKey(), e.getValue()));
+ }
+ }
+
+ if (logProps) {
+ SortedMap<String, String> sortedMap = new TreeMap<>();
+ for (Map.Entry<Object, Object> e : System.getProperties().entrySet()) {
+ sortedMap.put(String.valueOf(e.getKey()), String.valueOf(e.getValue()));
+ }
+ for (Map.Entry<String, String> e : sortedMap.entrySet()) {
+ log.info(sm.getString("versionLoggerListener.prop", e.getKey(), e.getValue()));
}
}
}
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index d43dc4e..82fe741 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -102,6 +102,10 @@
Ensure that when static resources are served from JARs, only static
resources are served. (markt)
</fix>
+ <add>
+ Allow <code>VersionLoggerListener</code> to log all system properties.
+ This feature is off by default. (kkolinko)
+ </add>
</changelog>
</subsection>
<subsection name="Jasper">
diff --git a/webapps/docs/config/listeners.xml b/webapps/docs/config/listeners.xml
index e7bb205..5a871bc 100644
--- a/webapps/docs/config/listeners.xml
+++ b/webapps/docs/config/listeners.xml
@@ -446,6 +446,12 @@
<code>false</code> will be used.</p>
</attribute>
+ <attribute name="logProps" required="false">
+ <p>If <code>true</code>, the current Java system properties will be
+ logged. If not specified, the default value of
+ <code>false</code> will be used.</p>
+ </attribute>
+
</attributes>
</subsection>