<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, spdy, 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;21.&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.2.21.v20170120</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;21.&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="d0e15289"></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="d0e15311"></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-03-13T11:47:53-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>