<html><head>
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
   <title>Example: Logging with Java's java.util.logging via 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-log4j.html" title="Example: Logging with Apache Log4j"><link rel="next" href="example-logging-java-util-logging-native.html" title="Example: Logging with Java's java.util.logging via JavaUtilLog"><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: Logging with Java's java.util.logging via Slf4j</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="example-logging-log4j.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-java-util-logging-native.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-logging-java-util-logging"></a>Example: Logging with Java's java.util.logging via Slf4j</h2></div></div></div><p>It is possible to have the Jetty Server logging configured so that
  <code class="literal"><a class="link" href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html" target="_top">java.util.logging</a></code>
  controls the output of logging events produced by Jetty.</p><p>This example demonstrates how to configuring Jetty for logging to
  <code class="literal"><a class="link" href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/package-summary.html" target="_top">java.util.logging</a></code>
  via <a class="link" href="http://slf4j.org/manual.html" target="_top">Slf4j</a> and the <a class="link" href="http://slf4j.org/manual.html#swapping" target="_top">Slf4j binding layer for
  java.util.logging</a>. If you want to use the built-in native JavaUtilLog
  implementation, see <a class="link" href="example-logging-java-util-logging-native.html" title="Example: Logging with Java's java.util.logging via JavaUtilLog">???</a></p><div class="simplesect"><div class="titlepage"><div><div><h3 class="title"><a name="d0e15066"></a>Quick Setup of java.util.logging (Slf4j) Logging 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
    logging with java.util.logging.</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/java.util.logging-slf4j/logging.mod</strong></span>
  % 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]$ <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-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]$ <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="d0e15088"></a>That's Cool! But what just happened?</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):
            slf4j-api, and slf4j-jdk14.</p><p>The 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">logging.properties</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
        java.util.logging, using the java.util.logging configuration found in
        <code class="filename">mybase/resources/logging.properties</code></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 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...)</p><p>If you have any custom java.util.logging handlers that you want to
    use, put the implementation jar in your
    <code class="filename">${jetty.base}/lib/logging/</code> directory and reference
    them in the
    <code class="filename">${jetty.base}/resources/logging.properties</code>
    file.</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="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title"><i class="icon-asterisk"></i> Note</h3><p><code class="literal">java.util.logging</code> is configured via the
      <code class="filename">${jetty.base}/resources/logging.properties</code> file
      during a valid startup of Jetty. This means that if there is any startup
      errors that occur before <code class="literal">java.util.logging</code> 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)</p><p>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 <a class="link" href="http://docs.oracle.com/javase/7/docs/api/java/util/logging/LogManager.html" target="_top">official
      java.util.logging.LogManager javadoc documentation from
      Oracle</a>.</p></div><p></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-log4j.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-java-util-logging-native.html">Next <i class="icon-chevron-right"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Example: Logging with Apache Log4j&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: Logging with Java's java.util.logging via
  JavaUtilLog</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>