<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Example: Capturing Multiple Logging Frameworks with Slf4j</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL-NS Stylesheets V1.76.1"><meta name="keywords" content="jetty, servlet, servlet-api, cometd, http, websocket, eclipse, maven, java, server, software"><link rel="home" href="index.html" title="Jetty : The Definitive Reference"><link rel="up" href="configuring-logging.html" title="Chapter&nbsp;20.&nbsp;Jetty Logging"><link rel="prev" href="example-logging-logback.html" title="Example: Logging with Logback"><link rel="next" href="example-logging-logback-centralized.html" title="Example: Centralized Logging with Logback"><link xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" rel="shortcut icon" href="images/favicon.ico"><script type="text/javascript" src="js/shCore.js"></script><script type="text/javascript" src="js/shBrushJava.js"></script><script type="text/javascript" src="js/shBrushXml.js"></script><script type="text/javascript" src="js/shBrushBash.js"></script><script type="text/javascript" src="js/shBrushJScript.js"></script><script type="text/javascript" src="js/shBrushSql.js"></script><script type="text/javascript" src="js/shBrushProperties.js"></script><script type="text/javascript" src="js/shBrushPlain.js"></script><link type="text/css" rel="stylesheet" href="css/shCore.css"><link type="text/css" rel="stylesheet" href="css/shThemeEclipse.css"><link type="text/css" rel="stylesheet" href="css/font-awesome.min.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><tr><td style="width: 25%"><a href="http://www.eclipse.org/jetty"><img src="images/jetty-header-logo.png" alt="Jetty Logo"></a><br><span style="font-size: small">
            Version: 9.3.0.v20150612</span></td><td style="width: 50%"><script type="text/javascript">  (function() {
            var cx = '016459005284625897022:obd4lsai2ds';
            var gcse = document.createElement('script');
            gcse.type = 'text/javascript';
            gcse.async = true;
            gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') +
            '//www.google.com/cse/cse.js?cx=' + cx;
            var s = document.getElementsByTagName('script')[0];
            s.parentNode.insertBefore(gcse, s);
            })();
          </script><gcse:search></gcse:search></td></tr></table><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Example: Capturing Multiple Logging Frameworks with Slf4j</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="example-logging-logback.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;20.&nbsp;Jetty Logging<br><a accesskey="p" href="index.html"><i class="icon-home"></i> Home</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="example-logging-logback-centralized.html">Next <i class="icon-chevron-right"></i></a></td></tr></table><hr></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="jetty-callout"><h5 class="callout"><a href="http://www.webtide.com/">Contact the core Jetty developers at
          <span class="website">www.webtide.com</span></a></h5><p>
 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
      </p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="example-slf4j-multiple-loggers"></a>Example: Capturing Multiple Logging Frameworks with Slf4j</h2></div></div></div><p>This page describes how to configure Jetty for capturing multiple
  logging frameworks logging events into a single logging implementation
  handled by Slf4j.</p><p>When using Slf4j, you can configure a single logging solution for the
  variety of logging libraries available in common use. With careful setup,
  you can support all of the following logging APIs at the same time, with a
  single configuration file to control the output of events produces by these
  APIs.</p><p>Logging APIs that Slf4j supports:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Slf4j API</p></li><li class="listitem"><p>Logback API</p></li><li class="listitem"><p>Apache Log4j 1.2</p></li><li class="listitem"><p>JDK 1.4 Logging (aka <code class="literal">java.util.logging</code>)</p></li><li class="listitem"><p>Apache Commons Logging</p></li></ul></div><p>To accomplish this you must make some careful choices, starting with a
  single underlying logging framework. This decision guides the rest of your
  choices about JARs to place on the Server classpath.</p><div class="table"><a name="d0e15584"></a><p class="title"><b>Table&nbsp;20.1.&nbsp;Slf4j Logging Grid</b></p><div class="table-contents"><table summary="Slf4j Logging Grid" border="1"><colgroup><col width="25%"><col width="25%"><col width="25%"><col width="25%"></colgroup><thead><tr><th>Logging API</th><th>Slf4j Binding Jar</th><th>Slf4j Adapter Jar</th><th>Underlying Logging Framework</th></tr></thead><tbody><tr><td>Logback API</td><td>n/a</td><td>logback-classic.jar</td><td>logback-core.jar</td></tr><tr><td>Log4j</td><td><a class="link" href="http://slf4j.org/legacy.html#log4j-over-slf4j" target="_top">log4j-over-slf4j.jar</a></td><td>slf4j-log4j12.jar</td><td>log4j.jar</td></tr><tr><td>JDK 1.4 Logging</td><td><a class="link" href="http://slf4j.org/legacy.html#jul-to-slf4j" target="_top">jul-to-slf4j.jar</a></td><td>slf4j-jdk14.jar</td><td>(Core Java Classlib)</td></tr><tr><td>Commons Logging</td><td><a class="link" href="http://slf4j.org/legacy.html#jcl-over-slf4j" target="_top">jcl-over-slf4j.jar</a></td><td>slf4j-jcl.jar</td><td>commons-logging.jar</td></tr></tbody></table></div></div><br class="table-break"><div class="variablelist"><dl><dt><span class="term">Logging API</span></dt><dd><p>The Logging API that you are either capturing events from and/or
        using to write out those events (for example, to disk).</p></dd><dt><span class="term">Slf4j Binding JAR</span></dt><dd><p>Special JARs, created and maintained by the Slf4j project, that
        pretend to be the various Logging API implementation classes, but
        instead just route that Logging API's events to Slf4j to
        handle.</p><p>There MAY be multiple Slf4j binding JARs present on the
        classpath at the same time.</p><p>For a single logging API, if you choose to use the Slf4j binding
        JAR, then you MUST NOT include the SLf4j adapter JAR or underlying
        logging framework in the classpath as well.</p></dd><dt><span class="term">Slf4j Adapter Jar</span></dt><dd><p>These JARs are created and maintained by the Slf4j project and
        route Slf4j logging events to a specific underlying logging
        framework.</p><p>There MUST NOT be multiple Slf4j adapter JARs present on the
        classpath at the same time.</p><p>Logging events that these adapter JARs capture can come from
        direct use of the Slf4j API or via one of the Slf4j binding JAR
        implementations.</p></dd><dt><span class="term">Underlying Logging Framework</span></dt><dd><p>This is the last leg of your configuration, the implementation
        that processes, filters, and outputs the logging events to the
        console, logging directory on disk, or whatever else the underlying
        logging framework supports (like Socket, SMTP, Database, or even
        SysLog in the case of Logback).</p><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="caution" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title"><i class="icon-exclamation-sign"></i> Caution</h3><p>There MUST NOT be multiple underlying logging frameworks on
            the classpath. If there are, the Slf4j framework fails to
            load.</p></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title"><i class="icon-asterisk"></i> Note</h3><p>Some third party libraries provide their own implementations
            of common logging APIs; be careful not to accidentally include an
            underlying logging framework.</p><p>For example, if you are using SpringSource you likely have a
            <code class="filename">com.springsource.org.apache.log4j.jar</code> along
            with a <code class="filename">log4j.jar</code>, which have the same classes
            in them. In this example, use the
            <code class="filename">com.springsource.org.apache.log4j.jar</code> version
            and exclude the <code class="filename">log4j.jar</code>, as the
            SpringSource version includes extra metadata suitable for using
            SpringSource.</p></div></dd></dl></div><p>The following sections use Logback as the underlying Logging
  framework. This requires using <code class="literal">logback-classic.jar</code> and
  <code class="literal">logback-core.jar</code>, and excluding any other Slf4j adapter
  JAR or underlying logging framework.</p><p>It also requires including the other Slf4j binding JARs in the
  classpath, along with some special initialization for
  <code class="literal">java.util.logging</code>.</p><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="d0e15710"></a>Quick Setup of Multiple Logging capture to Logback using Jetty
    9.2.1+</h3></div></div></div><p>A convenient replacement <code class="literal">logging</code> module has been
    created to bootstrap your <code class="filename">${jetty.base}</code> directory for
    capturing all Jetty server logging from multiple logging frameworks into a
    single logging output file managed by logback.</p><div class="screenexample"><pre class="screen">[mybase]$ mkdir modules
[mybase]$ cd modules

[modules]$ <span class="bold"><strong>curl -O https://raw.githubusercontent.com/jetty-project/logging-modules/master/capture-all/logging.mod</strong></span>
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1293  100  1293    0     0   3693      0 --:--:-- --:--:-- --:--:--  3694
[modules]$ cd ..

[mybase]$ <span class="bold"><strong>java -jar /opt/jetty-dist/start.jar --add-to-start=logging</strong></span>
INFO: logging         initialised in ${jetty.base}/start.ini (appended)
MKDIR: ${jetty.base}/logs
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: http://central.maven.org/maven2/org/slf4j/log4j-over-slf4j/1.6.6/log4j-over-slf4j-1.6.6.jar to lib/logging/log4j-over-slf4j-1.6.6.jar
DOWNLOAD: http://central.maven.org/maven2/org/slf4j/jul-to-slf4j/1.6.6/jul-to-slf4j-1.6.6.jar to lib/logging/jul-to-slf4j-1.6.6.jar
DOWNLOAD: http://central.maven.org/maven2/org/slf4j/jcl-over-slf4j/1.6.6/jcl-over-slf4j-1.6.6.jar to lib/logging/jcl-over-slf4j-1.6.6.jar
DOWNLOAD: http://central.maven.org/maven2/ch/qos/logback/logback-core/1.0.7/logback-core-1.0.7.jar to lib/logging/logback-core-1.0.7.jar
DOWNLOAD: http://central.maven.org/maven2/ch/qos/logback/logback-classic/1.0.7/logback-classic-1.0.7.jar to lib/logging/logback-classic-1.0.7.jar
DOWNLOAD: https://raw.githubusercontent.com/jetty-project/logging-modules/master/capture-all/logback.xml to resources/logback.xml
DOWNLOAD: https://raw.githubusercontent.com/jetty-project/logging-modules/master/capture-all/jetty-logging.properties to resources/jetty-logging.properties
DOWNLOAD: https://raw.githubusercontent.com/jetty-project/logging-modules/master/capture-all/jetty-logging.xml to etc/jetty-logging.xml
INFO: resources       initialised transitively
INFO: resources       enabled in     ${jetty.base}/start.ini

[mybase]$ <span class="bold"><strong>java -jar /opt/jetty-dist/start.jar</strong></span>
</pre></div></div><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="d0e15732"></a>That's cool and all, but tell me what that just did.</h3></div></div></div><p>The replacement <code class="filename">logging.mod</code> performs a number
    of tasks.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p><code class="filename">mybase</code> is a
        <code class="filename">${jetty.base}</code> directory</p></li><li class="listitem"><p>The jetty-distribution is unpacked (and untouched) into
        <code class="filename">/opt/jetty-dist/ </code>and becomes the
        <code class="filename">${jetty.home}</code> directory for this
        demonstration.</p></li><li class="listitem"><p>The <span class="command"><strong>curl</strong></span> command downloads the replacement
        <code class="filename">logging.mod</code> and puts it into the
        <code class="filename">${jetty.base}/modules/</code> directory for use by
        mybase only.</p></li><li class="listitem"><p>The <span class="command"><strong>start.jar --add-to-start=logging</strong></span> command
        performs a number of steps to make the logging module available to the
        <code class="filename">${jetty.base}</code> configuration.</p><div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem"><p>The <span class="command"><strong>--module=logging</strong></span> command is added to
            the <code class="filename">${jetty.base}/start.ini</code>
            configuration</p></li><li class="listitem"><p>Required <code class="filename">${jetty.base}</code> directories are
            created: <code class="filename">${jetty.base}/logs</code> and
            <code class="filename">${jetty.base}/resources</code></p></li><li class="listitem"><p>Required libraries are downloaded (if not present
            already):</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>slf4j-api.jar - API jar for Slf4j (used by most of the
                rest of the jars)</p></li><li class="listitem"><p>log4j-over-slf4j.jar - Slf4j jar that captures all log4j
                emitted logging events</p></li><li class="listitem"><p>jul-to-slf4j.jar - Slf4j jar that captures all
                java.util.logging events</p></li><li class="listitem"><p>jcl-over-slf4j.jar - Slf4j jar that captures all
                commons-logging events</p></li><li class="listitem"><p>logback-classic.jar - the Slf4j adapter jar that routes
                all of the captured logging events to logback itself.</p></li><li class="listitem"><p>logback-core.jar - the logback implementation jar, that
                handles all of the filtering and output of the logging
                events.</p></li></ul></div><p>These libraries are put in the
            <code class="filename">${jetty.base}/lib/logging/</code> directory.</p></li><li class="listitem"><p>Required configuration files are downloaded (if not present
            already): <code class="filename">jetty-logging.properties</code>, and
            <code class="filename">logback.xml</code></p><p>The configuration files are put in the
            <code class="filename">${jetty.base}/resources/</code> directory.</p></li><li class="listitem"><p>Required <code class="literal">java.util.logging</code> initialization
            commands are downloaded (if not present already):
            <code class="filename">jetty-logging.xml</code></p><p>The xml file is put in the
            <code class="filename">${jetty.base}/etc/</code> directory.</p></li></ol></div></li><li class="listitem"><p>At this point you have your <code class="filename">mybase</code>
        configured so that the jetty server itself will log using slf4j, and
        all other logging events from other Jetty Server components (such as
        database drivers, security layers, jsp, mail, and other 3rd party
        server components) are routed to logback for filtering and
        output.</p></li></ol></div><p>You can verify the server classpath by using the <span class="command"><strong>start.jar
    --list-config</strong></span> command.</p><p>In essence, Jetty is now configured to emit its own logging events
    to slf4j, and various slf4j bridge jars are acting on behalf of log4j,
    java.util.logging, and commons-logging, routing all of the logging events
    to logback (a slf4j adapter) for routing (to console, file, etc...)</p></div></div><script type="text/javascript">
      SyntaxHighlighter.all()
    </script><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="example-logging-logback.html"><i class="icon-chevron-left"></i> Previous</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="configuring-logging.html"><i class="icon-chevron-up"></i> Top</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="example-logging-logback-centralized.html">Next <i class="icon-chevron-right"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Example: Logging with Logback&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="icon-home"></i> Home</a></td><td width="40%" align="right" valign="top">&nbsp;Example: Centralized Logging with Logback</td></tr></table></div><p xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><div class="jetty-callout">
            See an error or something missing?
            <span class="callout"><a href="http://github.com/jetty-project/jetty-documentation">Contribute to this documentation at
                <span class="website"><i class="icon-github"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2015-06-15T13:18:26-05:00)</i></span></div></p><script xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" type="text/javascript">
  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-1149868-7']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();
    </script></body></html>