![]() Version: 9.3.28.v20191105 |
private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ... scalability guidance for your apps and Ajax/Comet projects ... development services for sponsored feature development
It is possible to have the Jetty Server logging configured so that java.util.logging
controls the output of logging events produced by Jetty.
This example demonstrates how to configuring Jetty for logging to java.util.logging
via Slf4j and the Slf4j binding layer for java.util.logging.
If you want to use the built-in native JavaUtilLog
implementation, see #example-logging-java-util-logging-native .
A convenient replacement logging
module has been created to bootstrap your ${jetty.base}
directory for logging with java.util.logging
.
[mybase]$ mkdir modules [mybase]$ cd modules [modules]$ curl -O https://raw.githubusercontent.com/jetty-project/logging-modules/master/java.util.logging-slf4j/logging.mod % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 826 100 826 0 0 2468 0 --:--:-- --:--:-- --:--:-- 2473 [modules]$ cd .. [mybase]$ java -jar /opt/jetty-dist/start.jar --add-to-start=logging INFO: logging initialised in ${jetty.base}/start.ini (appended) MKDIR: ${jetty.base}/logs DOWNLOAD: http://central.maven.org/maven2/org/slf4j/slf4j-jdk14/1.6.6/slf4j-jdk14-1.6.6.jar to lib/logging/slf4j-jdk14-1.6.6.jar DOWNLOAD: http://central.maven.org/maven2/org/slf4j/slf4j-api/1.6.6/slf4j-api-1.6.6.jar to lib/logging/slf4j-api-1.6.6.jar DOWNLOAD: https://raw.githubusercontent.com/jetty-project/logging-modules/master/java.util.logging-slf4j/jetty-logging.xml to etc/jetty-logging.xml DOWNLOAD: https://raw.githubusercontent.com/jetty-project/logging-modules/master/java.util.logging-slf4j/logging.properties to resources/logging.properties DOWNLOAD: https://raw.githubusercontent.com/jetty-project/logging-modules/master/java.util.logging-slf4j/jetty-logging.properties to resources/jetty-logging.properties INFO: resources initialised transitively INFO: resources enabled in ${jetty.base}/start.ini [mybase]$ java -jar /opt/jetty-dist/start.jar
The replacement logging.mod
performs a number of tasks.
mybase
is a ${jetty.base}
directory/opt/jetty-dist/
and becomes the ${jetty.home}
directory for this demonstration.curl
command downloads the replacement logging.mod
and puts it into the ${jetty.base}/modules/
directory for use by mybase
only.The start.jar --add-to-start=logging
command performs a number of steps to make the logging module available to the ${jetty.base}
configuration.
--module=logging
command is added to the ${jetty.base}/start.ini
configuration.${jetty.base}
directories are created: ${jetty.base}/logs
and ${jetty.base}/resources
.Required libraries are downloaded (if not present already): slf4j-api, and slf4j-jdk14.
${jetty.base}/lib/logging/
directory.Required configuration files are downloaded (if not present already): jetty-logging.properties
, and logging.properties
.
${jetty.base}/resources/
directory.Required java.util.logging
initialization commands are downloaded (if not present already): jetty-logging.xml
.
${jetty.base}/etc/
directory.At this point the Jetty mybase
is configured so that the Jetty server itself will log using java.util.logging
, using the java.util.logging
configuration found in mybase/resources/logging.properties
.
The server classpath can be verified by using the start.jar --list-config
command.
In essence, Jetty is now configured to emit its own logging events to slf4j, and slf4j itself is using the static log binder found in slf4j-jdk14.jar
, making all Jetty + Slf4j + java.util.logging
events emitted by the Jetty server go to java.util.logging
for routing (to console, file, etc…).
If there any custom java.util.logging
handlers to be used, put the implementation jar in the ${jetty.base}/lib/logging/
directory and reference them in the ${jetty.base}/resources/logging.properties
file.
Note
java.util.logging
is configured via the${jetty.base}/resources/logging.properties
file during a valid startup of Jetty.This means that if there is any startup errors that occur before
java.util.logging
is configured, they will likely be lost and/or not routed through your configuration.Other logging frameworks are more reliable in that they always initialize and configure on first use, unlike
java.util.logging
.
- While it is possible to configure
java.util.logging
sooner, even at JVM startup, the example demonstrated here does not show this technique. For more information consult the officialjava.util.logging.LogManager
javadoc documentation from Oracle.