Jetty Logo
Version: 9.3.7.v20160115
Contact the core Jetty developers at

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 from 1 day to full product delivery

Example: Logging with Logback

It is possible to have the Jetty Server logging configured so that Logback controls the output of logging events produced by Jetty. This is accomplished by configuring Jetty for logging to Logback, which uses Slf4j and the Logback Implementation for Slf4j.

Quick Setup of Logback Logging using Jetty 9.2.1+

A convenient replacement logging module has been created to bootstrap your ${jetty.base} directory for logging with logback.

[mybase]$ mkdir modules
[mybase]$ cd modules

[modules]$ curl -O
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   742  100   742    0     0   2196      0 --:--:-- --:--:-- --:--:--  2201
[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: to lib/logging/slf4j-api-1.6.6.jar
DOWNLOAD: to lib/logging/logback-core-1.0.7.jar
DOWNLOAD: to lib/logging/logback-classic-1.0.7.jar
DOWNLOAD: to resources/logback.xml
DOWNLOAD: to resources/

[mybase]$ java -jar /opt/jetty-dist/start.jar

That's Cool! But what just happened?

The replacement logging.mod performs a number of tasks.

  1. mybase is a ${jetty.base} directory

  2. The jetty-distribution is unpacked (and untouched) into /opt/jetty-dist/ and becomes the ${jetty.home} directory for this demonstration.

  3. The curl command downloads the replacement logging.mod and puts it into the ${jetty.base}/modules/ directory for use by mybase only.

  4. The start.jar --add-to-start=logging command performs a number of steps to make the logging module available to the ${jetty.base} configuration.

    1. The --module=logging command is added to the ${jetty.base}/start.ini configuration

    2. Required ${jetty.base} directories are created: ${jetty.base}/logs and ${jetty.base}/resources

    3. Required libraries are downloaded (if not present already): slf4j-api, logback-core, and logback-classic.

      The libraries are put in the ${jetty.base}/lib/logging/ directory.

    4. Required configuration files are downloaded (if not present already):, and logback.xml

      The configuration files are put in the ${jetty.base}/resources/ directory.

  5. At this point you have your mybase configured so that the jetty server itself will log using logback, using the logback configuration found in mybase/resources/logback.xml

You can verify the server classpath 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 logback-classic.jar. Making all Jetty + Slf4j + Logback events emitted by the Jetty server go to Logback for routing (to console, file, syslog, etc...)

See an error or something missing? Contribute to this documentation at Github!(Generated: 2016-02-12)