Issue #984 Improve module listing

Reworked logging modules
added support for ,= and += properties
This commit is contained in:
Greg Wilkins 2016-10-07 12:48:47 +11:00
parent 97d18665ef
commit d8b1c88abc
36 changed files with 205 additions and 144 deletions

View File

@ -5,23 +5,14 @@ Control GCloud API classpath
3rdparty 3rdparty
gcloud gcloud
[files]
basehome:modules/gcloud/gcloud.xml|etc/gcloud.xml
[lib] [lib]
lib/gcloud/*.jar lib/gcloud/*.jar
[xml]
etc/gcloud.xml
[license] [license]
GCloudDatastore is an open source project hosted on Github and released under the Apache 2.0 license. GCloudDatastore is an open source project hosted on Github and released under the Apache 2.0 license.
https://github.com/GoogleCloudPlatform/gcloud-java https://github.com/GoogleCloudPlatform/gcloud-java
http://www.apache.org/licenses/LICENSE-2.0.html http://www.apache.org/licenses/LICENSE-2.0.html
[ini-template] [ini-template]
## Configure the jars and packages exposed or hidden from webapps by comma separated ## Hide the gcloud libraries from deployed webapps
## list of classnames, package names or file URIs (See ClasspathPattern) jetty.webapp.addServerClasses,=file:${jetty.base}/lib/gcloud/
## Eg. to hide all gcloud dependencies other than the com.google.guava package:
## Default is all jars in lib/gcloud are hidden
# gcloud.addServerClasses=file:${jetty.base}/lib/gcloud,-com.google.guava.

View File

@ -364,7 +364,7 @@ public class StartArgs
} }
else else
{ {
System.out.printf(" %s = %s%n",key,properties.expand(prop.value)); System.out.printf(" %s = %s%n",key,prop.value);
if (StartLog.isDebugEnabled()) if (StartLog.isDebugEnabled())
{ {
System.out.printf(" origin: %s%n",prop.origin); System.out.printf(" origin: %s%n",prop.origin);
@ -372,7 +372,7 @@ public class StartArgs
{ {
prop = prop.overrides; prop = prop.overrides;
System.out.printf(" (overrides)%n"); System.out.printf(" (overrides)%n");
System.out.printf(" %s = %s%n",key,properties.expand(prop.value)); System.out.printf(" %s = %s%n",key,prop.value);
System.out.printf(" origin: %s%n",prop.origin); System.out.printf(" origin: %s%n",prop.origin);
} }
} }
@ -398,7 +398,7 @@ public class StartArgs
for (String key : sortedKeys) for (String key : sortedKeys)
{ {
String value = System.getProperty(key); String value = System.getProperty(key);
System.out.printf(" %s = %s%n",key,properties.expand(value)); System.out.printf(" %s = %s%n",key,value);
} }
} }
@ -1050,13 +1050,33 @@ public class StartArgs
} }
// Is this a raw property declaration? // Is this a raw property declaration?
int idx = arg.indexOf('='); int equals = arg.indexOf('=');
if (idx >= 0) if (equals >= 0)
{ {
String key = arg.substring(0,idx); String key = arg.substring(0,equals);
String value = arg.substring(idx + 1); String value = arg.substring(equals + 1);
if (replaceProps) if (key.endsWith("+"))
{
key = key.substring(0,key.length()-1);
String orig = getProperties().getString(key);
if (orig != null && !orig.isEmpty())
{
value=orig+value;
source=propertySource.get(key)+","+source;
}
}
else if (key.endsWith(","))
{
key = key.substring(0,key.length()-1);
String orig = getProperties().getString(key);
if (orig != null && !orig.isEmpty())
{
value=value.isEmpty()?orig:(orig+","+value);
source=propertySource.get(key)+","+source;
}
}
else if (replaceProps)
{ {
if (propertySource.containsKey(key)) if (propertySource.containsKey(key))
{ {
@ -1065,21 +1085,10 @@ public class StartArgs
propertySource.put(key,source); propertySource.put(key,source);
} }
if ("OPTION".equals(key) || "OPTIONS".equals(key))
{
StringBuilder warn = new StringBuilder();
warn.append("The behavior of the argument ");
warn.append(arg).append(" (seen in ").append(source);
warn.append(") has changed, and is now considered a normal property. ");
warn.append(key).append(" no longer controls what libraries are on your classpath,");
warn.append(" use --module instead. See --help for details.");
StartLog.warn(warn.toString());
}
setProperty(key,value,source,replaceProps); setProperty(key,value,source,replaceProps);
return; return;
} }
// Is this an xml file? // Is this an xml file?
if (FS.isXml(arg)) if (FS.isXml(arg))
{ {
@ -1184,7 +1193,9 @@ public class StartArgs
return; return;
} }
if (replaceProp || (!properties.containsKey(key))) if (value==null || value.isEmpty())
properties.remove(key,value,source);
else if (replaceProp || (!properties.containsKey(key)))
{ {
properties.setProperty(key,value,source); properties.setProperty(key,value,source);
if(key.equals("java.version")) if(key.equals("java.version"))

View File

@ -147,6 +147,15 @@ Startup / Shutdown Command Line:
Properties: Properties:
name=value
Set a property that can be expanded in XML files with the <Property> element.
name+=value
Add to an existing property.
name,=value
Add to an existing property as a comma separated list.
STOP.HOST=[string] STOP.HOST=[string]
The host to use to stop the running Jetty server (defaults to 127.0.0.1) The host to use to stop the running Jetty server (defaults to 127.0.0.1)
Required along with STOP.PORT if you want to use the --stop option above. Required along with STOP.PORT if you want to use the --stop option above.

View File

@ -12,3 +12,5 @@ PROP|main.prop=value0
PROP|port=9090 PROP|port=9090
PROP|other=value PROP|other=value
PROP|jetty.http.port=9090 PROP|jetty.http.port=9090
PROP|add=beginningmiddleend
PROP|list=one,two,three

View File

@ -1,2 +1,8 @@
other=value other=value
port=9090 port=9090
add+=beginning
add+=middle
add+=end
list,=one
list,=two
list,=three

View File

@ -1,6 +1,5 @@
[description] [description]
Provides a Java Commons Logging implementation that logs to the SLF4J API. Provides a Java Commons Logging (JCL) to SLF4J logging bridge.
Requires another module that provides and SLF4J implementation.
[tags] [tags]
logging logging

View File

@ -1,12 +0,0 @@
[description]
Provides a Jetty Logging implementation that logs to the Java Util Logging API.
Requires another module that provides a Java Util Logging implementation.
[tags]
logging
[provide]
logging
[exec]
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.JavaUtilLog

View File

@ -1,12 +0,0 @@
[description]
Provides a Jetty Logging implementation that logs to the log4j API.
Uses the slf4j mechanism as an intermediary
Requires another module that provides an log4j implementation.
[tags]
logging
log4j
[depend]
jetty-slf4j
slf4j-log4j

View File

@ -1,13 +0,0 @@
[description]
Provides a Jetty Logging implementation that logs to the log4j API.
Uses the slf4j and log4j v1.2 mechanisms as intermediaries.
Requires another module that provides an log4j2 implementation.
[tags]
logging
log4j2
log4j
[depend]
jetty-slf4j
slf4j-log4j2

View File

@ -1,10 +0,0 @@
[description]
Provides a Jetty Logging implementation that logs to logback.
Uses the slf4j API as an intermediary
[tags]
logging
[depend]
jetty-slf4j
slf4j-logback

View File

@ -1,16 +0,0 @@
[description]
Enables the Jetty Logging implementation and installs a template
configuration in ${jetty.base} resources/jetty-logging.properties.
[tags]
logging
[depends]
resources
[provide]
logging
[files]
basehome:modules/jetty-logging/jetty-logging.properties|resources/jetty-logging.properties

View File

@ -1,17 +0,0 @@
[description]
Provides a Jetty Logging implementation that logs to the SLF4J API.
Requires another module that provides and SLF4J implementation.
[tags]
logging
slf4j
[depend]
slf4j-api
slf4j-impl
[provide]
logging
[exec]
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog

View File

@ -1,7 +1,5 @@
[description] [description]
Provides a Log4j v1.2 implementation that logs to the Log4j v2 API. Provides a Log4j v1.2 to Log4j v2 logging bridge.
Requires another module that provides and Log4j v2 implementation.
To receive jetty logs the jetty-slf4j and slf4j-log4j must also be enabled.
[tags] [tags]
logging logging

View File

@ -1,7 +1,5 @@
[description] [description]
Provides the Log4j v2 API Provides the Log4j v2 API
Requires another module that provides an Log4j v2 implementation.
To receive jetty logs enable the jetty-slf4j, slf4j-log4j and log4j-log4j2 modules.
[tags] [tags]
logging logging

View File

@ -1,7 +1,5 @@
[description] [description]
Provides a Log4j v2 implementation that logs to the SLF4J API. Provides a Log4j v2 to SLF4J logging bridge.
Requires another module that provides and SLF4J implementation.
To receive jetty logs enable the jetty-slf4j module.
[tags] [tags]
logging logging

View File

@ -1,5 +1,5 @@
[description] [description]
Provides the logback core implementation, used by slf4j-logback Provides the logback core implementation
and logback-access and logback-access
[tags] [tags]

View File

@ -0,0 +1,20 @@
[description]
Configure jetty logging to use Java Commons Logging (jcl)
Uses SLF4j as a logging bridge.
[tags]
logging
[depends]
slf4j-jcl
jcl-impl
[provide]
logging
[exec]
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
[ini-template]
## Hide logging classes from deployed webapps
jetty.webapp.addServerClasses,=file:${jetty.base}/lib/slf4j/,file:${jetty.base}/lib/jul

View File

@ -0,0 +1,15 @@
[description]
Configure jetty logging mechanism.
Provides a ${jetty.base}/resources/jetty-logging.properties.
[tags]
logging
[depends]
resources
[provide]
logging
[files]
basehome:modules/logging-jetty/jetty-logging.properties|resources/jetty-logging.properties

View File

@ -0,0 +1,19 @@
[description]
Configure jetty logging to use Java Util Logging (jul)
Uses SLF4j as a logging bridge.
[tags]
logging
[depends]
slf4j-jul
[provide]
logging
[exec]
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
[ini-template]
## Hide logging classes from deployed webapps
jetty.webapp.addServerClasses,=file:${jetty.base}/lib/slf4j/

View File

@ -0,0 +1,20 @@
[description]
Configure jetty logging to use Log4j Logging
Uses SLF4j as a logging bridge.
[tags]
logging
[depends]
slf4j-log4j
log4j-impl
[provide]
logging
[exec]
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
[ini-template]
## Hide logging classes from deployed webapps
jetty.webapp.addServerClasses,=file:${jetty.base}/lib/slf4j/,file:${jetty.base}/lib/log4j/

View File

@ -0,0 +1,20 @@
[description]
Configure jetty logging to use log4j version 2
Uses SLF4j as a logging bridge.
[tags]
logging
[depends]
slf4j-log4j2
log4j2-impl
[provide]
logging
[exec]
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
[ini-template]
## Hide logging classes from deployed webapps
jetty.webapp.addServerClasses,=file:${jetty.base}/lib/slf4j/,file:${jetty.base}/lib/log4j/

View File

@ -0,0 +1,20 @@
[description]
Configure jetty logging to use Logback Logging.
Uses SLF4j as a logging bridge.
[tags]
logging
[depends]
slf4j-logback
logback-impl
[provide]
logging
[exec]
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
[ini-template]
## Hide logging classes from deployed webapps
jetty.webapp.addServerClasses,=file:${jetty.base}/lib/slf4j/,file:${jetty.base}/lib/logback

View File

@ -0,0 +1,19 @@
[description]
Configure jetty logging to use slf4j.
Any slf4j-impl implementation is used
[tags]
logging
[depends]
slf4j-impl
[provide]
logging
[exec]
-Dorg.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.Slf4jLog
[ini-template]
## Hide logging classes from deployed webapps
jetty.webapp.addServerClasses,=file:${jetty.base}/lib/slf4j/

View File

@ -2,15 +2,20 @@
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd"> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd">
<Configure id="Server" class="org.eclipse.jetty.server.Server"> <Configure id="Server" class="org.eclipse.jetty.server.Server">
<Call class="org.eclipse.jetty.webapp.WebAppContext" name="addSystemClasses">
<Arg><Ref refid="Server"/></Arg>
<Arg>
<Call class="org.eclipse.jetty.util.StringUtil" name="csvSplit">
<Arg><Property name="jetty.webapp.addSystemClasses"/></Arg>
</Call>
</Arg>
</Call>
<!-- ===================================================================== -->
<!-- Configure a GCloud classpath exposed to webapps -->
<!-- ===================================================================== -->
<Call class="org.eclipse.jetty.webapp.WebAppContext" name="addServerClasses"> <Call class="org.eclipse.jetty.webapp.WebAppContext" name="addServerClasses">
<Arg><Ref refid="Server"/></Arg> <Arg><Ref refid="Server"/></Arg>
<Arg> <Arg>
<Call class="org.eclipse.jetty.util.StringUtil" name="csvSplit"> <Call class="org.eclipse.jetty.util.StringUtil" name="csvSplit">
<Arg><Property name="gcloud.addServerClasses"><Default>file:<Property name="jetty.base"/>/lib/gcloud</Default></Property></Arg> <Arg><Property name="jetty.webapp.addServerClasses"/></Arg>
</Call> </Call>
</Arg> </Arg>
</Call> </Call>

View File

@ -1,7 +1,5 @@
[description] [description]
Provides a SLF4J implementation that logs to the Java Commons Logging API. Provides a SLF4J to Java Commons Logging (JCL) logging bridge.
Requires another module that provides an JCL implementation.
To receive jetty logs enable the jetty-slf4j module.
[tags] [tags]
logging logging

View File

@ -1,6 +1,5 @@
[description] [description]
Provides a SLF4J implementation that logs to the Java Util Logging API. Provides a SLF4J to Java Util Logging (JUL) logging bridge.
To receive jetty logs enable the jetty-slf4j module.
[tags] [tags]
logging logging

View File

@ -1,7 +1,5 @@
[description] [description]
Provides a SLF4J implementation that logs to the Log4j v1.2 API. Provides a SLF4J to the Log4j v1.2 API logging bridge.
Requires another module that provides a Log4j implementation.
To receive jetty logs enable the jetty-slf4j module.
[tags] [tags]
logging logging

View File

@ -1,7 +1,5 @@
[description] [description]
Provides a SLF4J implementation that logs to the Log4j v2 API. Provides a SLF4J to Log4j v2 logging bridge.
Requires another module that provides a Log4j2 implementation.
To receive jetty logs enable the jetty-slf4j2 module.
[tags] [tags]
logging logging

View File

@ -1,6 +1,5 @@
[description] [description]
Provides a SLF4J implementation that logs to Logback classic Provides a SLF4J to Logback logging bridge.
To receive jetty logs enable the jetty-slf4j module.
[tags] [tags]
logging logging
@ -9,7 +8,7 @@ verbose
[depend] [depend]
slf4j-api slf4j-api
logback-core logback-impl
resources resources
[provide] [provide]

View File

@ -12,7 +12,6 @@ etc/stderrout-logging.xml
logs/ logs/
[lib] [lib]
lib/logging/**.jar
resources/ resources/
[ini-template] [ini-template]

View File

@ -24,5 +24,5 @@ lib/jetty-webapp-${jetty.version}.jar
## + a directory of jars,resource or classes e.g. 'file:${jetty.base}/resources' ## + a directory of jars,resource or classes e.g. 'file:${jetty.base}/resources'
## + A pattern preceeded with a '-' is an exclusion, all other patterns are inclusions ## + A pattern preceeded with a '-' is an exclusion, all other patterns are inclusions
## ##
#jetty.webapp.addSystemClasses= jetty.webapp.addSystemClasses,=
#jetty.webapp.addServerClasses= jetty.webapp.addServerClasses,=