[logback-dev] svn commit: r626 - in logback/trunk: logback-access/src/main/java/ch/qos/logback/access logback-access/src/main/java/ch/qos/logback/access/jetty logback-access/src/main/java/ch/qos/logback/access/net logback-access/src/main/java/ch/qos/logback/access/pattern logback-site/src/site/xdocTemplates

noreply.seb at qos.ch noreply.seb at qos.ch
Fri Oct 6 09:38:58 CEST 2006


Author: seb
Date: Fri Oct  6 09:38:58 2006
New Revision: 626

Added:
   logback/trunk/logback-site/src/site/xdocTemplates/accessLogJetty.xml
Modified:
   logback/trunk/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java
   logback/trunk/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java
   logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java
   logback/trunk/logback-access/src/main/java/ch/qos/logback/access/pattern/PostContentConverter.java
   logback/trunk/logback-site/src/site/xdocTemplates/documentation.xml

Log:
- added documentation for logback access.
- removed PostContentConverter from PatternLayout.

Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java
==============================================================================
--- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java	(original)
+++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/PatternLayout.java	Fri Oct  6 09:38:58 2006
@@ -36,39 +36,216 @@
 import ch.qos.logback.core.pattern.Converter;
 import ch.qos.logback.core.pattern.PatternLayoutBase;
 
-
+/**
+ * <p>
+ * This class is a module-specific implementation of
+ * {@link ch.qos.logback.classic.PatternLayout} to allow http-specific patterns
+ * to be used. The <code>ch.qos.logback.access.PatternLayout</code> provides a
+ * way to format the logging output that is just as easy and flexible as the
+ * usual <code>PatternLayout</code>.
+ * </p>
+ * <p>
+ * For more information about the general use of a <code>PatternLayout</code>,
+ * please refer to logback classic's
+ * <code>ch.qos.logback.classic.PatternLayout</code>.
+ * </p>
+ * <p>
+ * Logback access' <code>PatternLayout</code> offers the following
+ * possibilities:
+ * </p>
+ * <table border="1" CELLPADDING="8">
+ * <th>Conversion Character or Word</th>
+ * <th>Effect</th>
+ * 
+ * <tr>
+ * <td align="center"><b>a / remoteIP</b></td>
+ * <td>
+ * <p>
+ * Remote IP address.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>A / localIP</b></td>
+ * <td>
+ * <p>
+ * Local IP address.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>b / B / byteSent</b></td>
+ * <td>
+ * <p>
+ * Response's content length.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>h / clientHost</b></td>
+ * <td>
+ * <p>
+ * Remote host.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>H / protocol</b></td>
+ * <td>
+ * <p>
+ * Request protocol.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>i / header</b></td>
+ * <td>
+ * <p>
+ * Request header. This conversion word can be followed by a key whose
+ * corresponding data will be extracted from the header information.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>m / requestMethod</b></td>
+ * <td>
+ * <p>
+ * Request method.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>r / requestURL</b></td>
+ * <td>
+ * <p>
+ * URL requested.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>s / statusCode</b></td>
+ * <td>
+ * <p>
+ * Status code of the request.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>t / date</b></td>
+ * <td>
+ * <p>
+ * Date of the event.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>u / user</b></td>
+ * <td>
+ * <p>
+ * Remote user.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>U / requestURI</b></td>
+ * <td>
+ * <p>
+ * Requested URI.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>v / server</b></td>
+ * <td>
+ * <p>
+ * Server name.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>localPort</b></td>
+ * <td>
+ * <p>
+ * Local port.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>reqAttribute</b></td>
+ * <td>
+ * <p>
+ * Attribute of the request. Just like the request header conversion word,
+ * reqAttribute can be followed by a key.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>reqCookie</b></td>
+ * <td>
+ * <p>
+ * Request cookie.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>responseHeader</b></td>
+ * <td>
+ * <p>
+ * Header of the response. Just like the request header conversion word,
+ * responseHeader can be followed by a key.
+ * </p>
+ * </td>
+ * </tr>
+ * <tr>
+ * <td align="center"><b>reqParameter</b></td>
+ * <td>
+ * <p>
+ * Parameter of the response. Just like the request header conversion word,
+ * reqParameter can be followed by a key.
+ * </p>
+ * </td>
+ * </tr>
+ * </table>
+ * 
+ * @author Ceki G&uuml;lc&uuml;
+ * @author S&eacute;bastien Pennec
+ */
 public class PatternLayout extends PatternLayoutBase implements AccessLayout {
 
   static final Map<String, String> defaultConverterMap = new HashMap<String, String>();
 
   public static String CLF_PATTERN = "%h %l %u %t \"%r\" %s %b";
-  
+
   static {
 
     defaultConverterMap.put("a", RemoteIPAddressConverter.class.getName());
-    defaultConverterMap.put("remoteIP", RemoteIPAddressConverter.class.getName());
+    defaultConverterMap.put("remoteIP", RemoteIPAddressConverter.class
+        .getName());
 
     defaultConverterMap.put("A", LocalIPAddressConverter.class.getName());
     defaultConverterMap.put("localIP", LocalIPAddressConverter.class.getName());
 
     defaultConverterMap.put("b", ContentLengthConverter.class.getName());
     defaultConverterMap.put("B", ContentLengthConverter.class.getName());
-    defaultConverterMap.put("bytesSent", ContentLengthConverter.class.getName());
+    defaultConverterMap
+        .put("bytesSent", ContentLengthConverter.class.getName());
 
     defaultConverterMap.put("h", RemoteHostConverter.class.getName());
     defaultConverterMap.put("clientHost", RemoteHostConverter.class.getName());
 
     defaultConverterMap.put("H", RequestProtocolConverter.class.getName());
-    defaultConverterMap.put("protocol", RequestProtocolConverter.class.getName());
-    
+    defaultConverterMap.put("protocol", RequestProtocolConverter.class
+        .getName());
+
     defaultConverterMap.put("i", RequestHeaderConverter.class.getName());
     defaultConverterMap.put("header", RequestHeaderConverter.class.getName());
-    
+
     defaultConverterMap.put("l", NAConverter.class.getName());
-    
+
     defaultConverterMap.put("m", RequestMethodConverter.class.getName());
-    defaultConverterMap.put("requestMethod", RequestMethodConverter.class.getName());
-    
+    defaultConverterMap.put("requestMethod", RequestMethodConverter.class
+        .getName());
+
     defaultConverterMap.put("r", RequestURLConverter.class.getName());
     defaultConverterMap.put("requestURL", RequestURLConverter.class.getName());
 
@@ -80,23 +257,26 @@
 
     defaultConverterMap.put("u", RemoteUserConverter.class.getName());
     defaultConverterMap.put("user", RemoteUserConverter.class.getName());
-    
+
     defaultConverterMap.put("U", RequestURIConverter.class.getName());
     defaultConverterMap.put("requestURI", RequestURIConverter.class.getName());
-    
+
     defaultConverterMap.put("v", ServerNameConverter.class.getName());
     defaultConverterMap.put("server", ServerNameConverter.class.getName());
-    
+
     defaultConverterMap.put("localPort", LocalPortConverter.class.getName());
-    defaultConverterMap.put("reqAttribute", RequestAttributeConverter.class.getName());
-    defaultConverterMap.put("reqCookie", RequestCookieConverter.class.getName());
-    defaultConverterMap.put("responseHeader", ResponseHeaderConverter.class.getName());
-    defaultConverterMap.put("reqParameter", RequestParameterConverter.class.getName());
-    
-    
+    defaultConverterMap.put("reqAttribute", RequestAttributeConverter.class
+        .getName());
+    defaultConverterMap
+        .put("reqCookie", RequestCookieConverter.class.getName());
+    defaultConverterMap.put("responseHeader", ResponseHeaderConverter.class
+        .getName());
+    defaultConverterMap.put("reqParameter", RequestParameterConverter.class
+        .getName());
+
     defaultConverterMap.put("n", LineSeparatorConverter.class.getName());
   }
-  
+
   public PatternLayout() {
     // set a default value for pattern
     setPattern(CLF_PATTERN);
@@ -115,7 +295,7 @@
   protected void postCompileProcessing(Converter head) {
     Converter tail = findTail(head);
     Converter newLineConverter = new LineSeparatorConverter();
-    if(tail == null) {
+    if (tail == null) {
       head = newLineConverter;
     } else {
       if (!(tail instanceof LineSeparatorConverter)) {
@@ -135,6 +315,5 @@
   public String doLayout(Object o) {
     return doLayout((AccessEvent) o);
   }
- 
 
 }

Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java
==============================================================================
--- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java	(original)
+++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/jetty/RequestLogImpl.java	Fri Oct  6 09:38:58 2006
@@ -24,56 +24,80 @@
  * LoggerContext does. It also provides containers for properties.
  * <p>
  * To configure jetty in order to use RequestLogImpl, the following lines must
- * be added to the jetty configuration file:
+ * be added to the jetty configuration file, namely <em>etc/jetty.xml</em>:
+ * 
  * <pre>
- * &lt;Ref id="requestLog"&gt; 
- *   &lt;Set name="requestLog"&gt; 
- *     &lt;New id="requestLogImpl" class="ch.qos.logback.access.jetty.RequestLogImpl"&gt;&lt;/New&gt;
- *   &lt;/Set&gt; 
- * &lt;/Ref&gt;
+ *  &lt;Ref id=&quot;requestLog&quot;&gt; 
+ *    &lt;Set name=&quot;requestLog&quot;&gt; 
+ *      &lt;New id=&quot;requestLogImpl&quot; class=&quot;ch.qos.logback.access.jetty.RequestLogImpl&quot;&gt;&lt;/New&gt;
+ *    &lt;/Set&gt; 
+ *  &lt;/Ref&gt;
  * </pre>
+ * 
  * By default, RequestLogImpl looks for a logback configuration file called
  * logback.xml, in the same folder where jetty.xml is located, that is
- * /etc/logback.xml. The logback.xml file is slightly different than the usual
+ * <em>etc/logback.xml</em>. The logback.xml file is slightly different than the usual
  * logback classic configuration file. Most of it is the same: Appenders and
  * Layouts are declared the exact same way. However, loggers elements are not
  * allowed.
  * <p>
- * It is possible to put the logback configuration file anywhere, as long as it's path is
- * specified. Here is another example, with a path to the logback.xml file.
+ * It is possible to put the logback configuration file anywhere, as long as
+ * it's path is specified. Here is another example, with a path to the
+ * logback.xml file.
+ * 
  * <pre>
- * &lt;Ref id="requestLog"&gt; 
- *   &lt;Set name="requestLog"&gt; 
- *     &lt;New id="requestLogImpl" class="ch.qos.logback.access.jetty.RequestLogImpl"&gt;&lt;/New&gt;
- *       &lt;Set name="fileName"&gt;path/to/logback.xml&lt;/Set&gt;
- *   &lt;/Set&gt; 
- * &lt;/Ref&gt;
+ *  &lt;Ref id=&quot;requestLog&quot;&gt; 
+ *    &lt;Set name=&quot;requestLog&quot;&gt; 
+ *      &lt;New id=&quot;requestLogImpl&quot; class=&quot;ch.qos.logback.access.jetty.RequestLogImpl&quot;&gt;&lt;/New&gt;
+ *        &lt;Set name=&quot;fileName&quot;&gt;path/to/logback.xml&lt;/Set&gt;
+ *    &lt;/Set&gt; 
+ *  &lt;/Ref&gt;
  * </pre>
+ * 
  * <p>
  * Here is a sample logback.xml file that can be used right away:
+ * 
  * <pre>
- * &lt;configuration&gt; 
- *   &lt;appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"&gt; 
- *     &lt;layout class="ch.qos.logback.access.PatternLayout"&gt; 
- *       &lt;param name="Pattern" value="%date %server %remoteIP %clientHost %user %requestURL" /&gt;
- *     &lt;/layout&gt; 
- *   &lt;/appender&gt; 
- *   
- *   &lt;appender-ref ref="STDOUT" /&gt; 
- * &lt;/configuration&gt;
+ *  &lt;configuration&gt; 
+ *    &lt;appender name=&quot;STDOUT&quot; class=&quot;ch.qos.logback.core.ConsoleAppender&quot;&gt; 
+ *      &lt;layout class=&quot;ch.qos.logback.access.PatternLayout&quot;&gt; 
+ *        &lt;param name=&quot;Pattern&quot; value=&quot;%date %server %remoteIP %clientHost %user %requestURL&quot; /&gt;
+ *      &lt;/layout&gt; 
+ *    &lt;/appender&gt; 
+ *    
+ *    &lt;appender-ref ref=&quot;STDOUT&quot; /&gt; 
+ *  &lt;/configuration&gt;
  * </pre>
  * 
+ * <p>
+ * Another configuration file, using SMTPAppender, could be:
  * 
+ * <pre>
+ *  &lt;configuration&gt; 
+ *    &lt;appender name=&quot;SMTP&quot; class=&quot;ch.qos.logback.access.net.SMTPAppender&quot;&gt;
+ *      &lt;layout class=&quot;ch.qos.logback.access.PatternLayout&quot;&gt;
+ *        &lt;param name=&quot;pattern&quot; value=&quot;%remoteIP [%date] %requestURL %statusCode %bytesSent&quot; /&gt;
+ *      &lt;/layout&gt;
+ *      &lt;param name=&quot;From&quot; value=&quot;sender at domaine.org&quot; /&gt;
+ *      &lt;param name=&quot;SMTPHost&quot; value=&quot;mail.domain.org&quot; /&gt;
+ *       &lt;param name=&quot;Subject&quot; value=&quot;Last Event: %statusCode %requestURL&quot; /&gt;
+ *       &lt;param name=&quot;To&quot; value=&quot;server_admin at domain.org&quot; /&gt;
+ *    &lt;/appender&gt;
+ *    &lt;appender-ref ref=&quot;SMTP&quot; /&gt; 
+ *  &lt;/configuration&gt;
+ * </pre>
  * <p>
- * A special, module-specific implementation of PatternLayout was implemented to allow
- * http-specific patterns to be used. The {@link ch.qos.logback.access.PatternLayout} provides
- * a way to format the logging output that is just as easy and flexible as the usual 
- * PatternLayout.
- * For more information about the general use of a PatternLayout, please refer to logback
- * classic's {@link ch.qos.logback.classic.PatternLayout}. For information about logback
- * access' specific PatternLayout, please refer to it's javadoc.
+ * A special, module-specific implementation of PatternLayout was implemented to
+ * allow http-specific patterns to be used. The
+ * {@link ch.qos.logback.access.PatternLayout} provides a way to format the
+ * logging output that is just as easy and flexible as the usual PatternLayout.
+ * For more information about the general use of a PatternLayout, please refer
+ * to logback classic's {@link ch.qos.logback.classic.PatternLayout}. For
+ * information about logback access' specific PatternLayout, please refer to
+ * it's javadoc.
  * 
  * @author Ceki G&uuml;lc&uuml;
+ * @author S&eacute;bastien Pennec
  */
 public class RequestLogImpl extends ContextBase implements RequestLog,
     AppenderAttachable {

Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java
==============================================================================
--- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java	(original)
+++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/net/SMTPAppender.java	Fri Oct  6 09:38:58 2006
@@ -20,8 +20,7 @@
 import ch.qos.logback.core.rolling.TriggeringPolicy;
 
 /**
- * Send an e-mail when a specific access event occurs, typically on errors or
- * fatal errors.
+ * Send an e-mail when a specific access event occurs, typically on server errors.
  * 
  * <p>
  * The number of access events delivered in this e-mail depend on the value of

Modified: logback/trunk/logback-access/src/main/java/ch/qos/logback/access/pattern/PostContentConverter.java
==============================================================================
--- logback/trunk/logback-access/src/main/java/ch/qos/logback/access/pattern/PostContentConverter.java	(original)
+++ logback/trunk/logback-access/src/main/java/ch/qos/logback/access/pattern/PostContentConverter.java	Fri Oct  6 09:38:58 2006
@@ -2,6 +2,15 @@
 
 import ch.qos.logback.access.spi.AccessEvent;
 
+/**
+ * This class is tied to the <code>postContent</code> conversion pattern.
+ * 
+ * It has been removed from the {@link ch.qos.logback.access.PatternLayout} since
+ * it needs further testing before being used widely.
+ *
+ * @author Ceki G&uuml;lc&uuml;
+ * @author S&eacute;bastien Pennec
+ */
 public class PostContentConverter extends AccessConverter {
 
   @Override

Added: logback/trunk/logback-site/src/site/xdocTemplates/accessLogJetty.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-site/src/site/xdocTemplates/accessLogJetty.xml	Fri Oct  6 09:38:58 2006
@@ -0,0 +1,322 @@
+<document>
+	<!-- 
+		
+		Warning: do not use any auto-format function on this file.
+		Since "source" divs use pre as white-space, it affects the
+		look of the code parts in this document.
+		
+	-->
+
+
+	<body>
+		<h2>Access log with logback and Jetty</h2>
+		<div class="author">
+			Authors: Ceki G&#252;lc&#252;, S&#233;bastien Pennec
+		</div>
+
+
+		<table>
+			<tr>
+				<td valign="top" align="top">
+					<a rel="license"
+						href="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+						<img alt="Creative Commons License" border="0"
+							valign="top" align="top"
+							src="http://creativecommons.org/images/public/somerights20.png" />
+					</a>
+				</td>
+				<td>
+					<p>Copyright &#169; 2000-2006, QOS.ch</p>
+
+					<p>
+						This work is licensed under a
+						<a rel="license"
+							href="http://creativecommons.org/licenses/by-nc-nd/2.5/">
+							Creative Commons
+							Attribution-Noncommercial-No Derivative
+							Works 2.5 License
+						</a>
+						.
+					</p>
+				</td>
+			</tr>
+		</table>
+
+		<h2>Introduction</h2>
+
+		<p>
+			Since its first design drafts, logback has been concieved as a modular framework.
+			Being able to use logback's internal core in many situations, without heavy coding or 
+			complex specific configuration was one of our goals.
+		</p>
+		<p>
+			Lobgack access integrates with Servlet containers such as Jetty and Tomcat to provide
+			HTTP-access log functionality.
+		</p>
+		<p>
+			Integrating logback into Jetty is very simple. Once done, one can benefit of many of
+			logback's flexibility and reliability.
+		</p>
+
+		<h2>Logback's RequestLog implementation</h2>
+
+		<p>
+			Logback's <code>ch.qos.logback.access.jetty.RequestLogImpl</code> is an
+			implementation of jetty's <code>RequestLog</code> interface.
+		</p>
+		<p>
+			It can be seen as logback classic's <code>LoggerContext</code>. 
+		</p>
+		<p>
+			In logback, logging destinations are called Appenders. These classes
+			can be attached directly to <code>RequestLogImpl</code>.
+		</p>
+		<p>Logback's internal error reporting system is based on Status objects.
+			<code>RequestLogImpl</code> uses the same <code>StatusManager</code> 
+			as <code>LoggerContext</code> does. It also provides containers for properties.
+		</p>
+		<p>
+			To configure jetty in order to use <code>RequestLogImpl</code>, the
+			following lines must be added to the jetty configuration
+			file, namely <em>etc/jetty.xml</em>:
+		</p>
+		<pre>
+&lt;Ref id="requestLog"&gt;
+  &lt;Set name="requestLog"&gt;
+    &lt;New id="requestLogImpl"
+      class="ch.qos.logback.access.jetty.RequestLogImpl"&gt;
+    &lt;/New&gt;
+  &lt;/Set&gt;
+&lt;/Ref&gt;
+		</pre>
+		<p>
+			By default, <code>RequestLogImpl</code> looks for a logback configuration
+			file called logback.xml, in the same folder where jetty.xml
+			is located, that is <em>etc/logback.xml</em>. The logback.xml file
+			is slightly different than the usual logback classic
+			configuration file. Most of it is the same: Appenders and
+			Layouts (which are logback components to format logging output)
+			are declared the exact same way. However, loggers
+			elements are not allowed. It is possible to put the logback
+			configuration file anywhere, as long as it's path is
+			specified. Here is another example, with a path to the
+			logback.xml file.
+		</p>
+		<pre>
+&lt;Ref id="requestLog"&gt;
+  &lt;Set name="requestLog"&gt;
+    &lt;New id="requestLogImpl"
+      class="ch.qos.logback.access.jetty.RequestLogImpl"&gt;
+    &lt;/New&gt;
+    &lt;Set name="fileName"&gt;path/to/logback.xml&lt;/Set&gt;
+  &lt;/Set&gt;
+&lt;/Ref&gt;
+		</pre>
+		<p>
+			Here is a sample logback.xml file that can be used right
+			away:
+		</p>
+		<pre>
+&lt;configuration&gt;
+  &lt;appender name="STDOUT"
+    class="ch.qos.logback.core.ConsoleAppender"&gt;
+    &lt;layout
+      class="ch.qos.logback.access.PatternLayout"&gt;
+      &lt;param name="Pattern"
+        value="%date %server %remoteIP %clientHost %user %requestURL" /&gt;
+    &lt;/layout&gt;
+  &lt;/appender&gt;
+
+  &lt;appender-ref ref="STDOUT" /&gt;
+&lt;/configuration&gt;
+		</pre>
+		<p>Another configuration file, using logback access <code>SMTPAppender</code>, could be:</p>
+		<pre>
+&lt;configuration&gt;
+  &lt;appender name="SMTP"
+    class="ch.qos.logback.access.net.SMTPAppender"&gt;
+    &lt;layout
+      class="ch.qos.logback.access.PatternLayout"&gt;
+      &lt;param name="pattern"
+        value="%remoteIP [%date] %requestURL %statusCode %bytesSent" /&gt;
+    &lt;/layout&gt;
+    &lt;param name="From" value="sender at domaine.org" /&gt;
+    &lt;param name="SMTPHost" value="mail.domain.org" /&gt;
+    &lt;param name="Subject"
+      value="Last Event: %statusCode %requestURL" /&gt;
+    &lt;param name="To" value="server_admin at domain.org" /&gt;
+    &lt;/appender&gt;
+  &lt;appender-ref ref="SMTP" /&gt;
+&lt;/configuration&gt;
+		</pre>
+		<p>
+			A special, module-specific implementation of <code>PatternLayout</code>
+			was implemented to allow http-specific patterns to be used.
+			The <code>ch.qos.logback.access.PatternLayout</code> provides a way to
+			format the logging output that is just as easy and flexible
+			as the usual <code>PatternLayout</code>. 
+		</p>
+		<p>	
+			For more information about the
+			general use of a <code>PatternLayout</code>, please refer to logback
+			classic's <code>ch.qos.logback.classic.PatternLayout</code>.
+		</p>
+		<p>
+		  Logback access <code>PatternLayout</code> offers the following possibilities:
+		</p>
+		<table border="1" CELLPADDING="8">
+			<th align="center">Conversion Character or Word</th>
+			<th align="center">Effect</th>
+
+		<tr>
+			<td align="center"><b>a / remoteIP</b></td>
+			<td>
+				<p>
+					Remote IP address.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>A / localIP</b></td>
+			<td>
+				<p>
+					Local IP address.
+				</p>
+			</td>
+		</tr>		
+		<tr>
+			<td align="center"><b>b / B / byteSent</b></td>
+			<td>
+				<p>
+					Response's content length.
+				</p>
+			</td>
+		</tr>				
+		<tr>
+			<td align="center"><b>h / clientHost</b></td>
+			<td>
+				<p>
+					Remote host.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>H / protocol</b></td>
+			<td>
+				<p>
+					Request protocol.
+				</p>
+			</td>
+		</tr>		
+		<tr>
+			<td align="center"><b>i / header</b></td>
+			<td>
+				<p>
+					Request header. This conversion word can be followed by a key 
+					whose corresponding data will be extracted from the header information.
+				</p>
+			</td>
+		</tr>	
+		<tr>
+			<td align="center"><b>m / requestMethod</b></td>
+			<td>
+				<p>
+					Request method.
+				</p>
+			</td>
+		</tr>		
+		<tr>
+			<td align="center"><b>r / requestURL</b></td>
+			<td>
+				<p>
+					URL requested.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>s / statusCode</b></td>
+			<td>
+				<p>
+					Status code of the request.
+				</p>
+			</td>
+		</tr>		
+		<tr>
+			<td align="center"><b>t / date</b></td>
+			<td>
+				<p>
+					Date of the event.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>u / user</b></td>
+			<td>
+				<p>
+					Remote user.
+				</p>
+			</td>
+		</tr>		
+		<tr>
+			<td align="center"><b>U / requestURI</b></td>
+			<td>
+				<p>
+					Requested URI.
+				</p>
+			</td>
+		</tr>		
+		<tr>
+			<td align="center"><b>v / server</b></td>
+			<td>
+				<p>
+					Server name.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>localPort</b></td>
+			<td>
+				<p>
+					Local port.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>reqAttribute</b></td>
+			<td>
+				<p>
+					Attribute of the request. Just like the request header
+					conversion word, reqAttribute can be followed by a key.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>reqCookie</b></td>
+			<td>
+				<p>
+					Request cookie. Just like the request header
+					conversion word, reqCookie can be followed by a key.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>responseHeader</b></td>
+			<td>
+				<p>
+					Header of the response. Just like the request header
+					conversion word, responseHeader can be followed by a key.
+				</p>
+			</td>
+		</tr>
+		<tr>
+			<td align="center"><b>reqParameter</b></td>
+			<td>
+				<p>
+					Parameter of the response. Just like the request header
+					conversion word, reqParameter can be followed by a key.
+				</p>
+			</td>
+		</tr>
+		</table>
+	</body>
+</document>

Modified: logback/trunk/logback-site/src/site/xdocTemplates/documentation.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/documentation.xml	(original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/documentation.xml	Fri Oct  6 09:38:58 2006
@@ -17,9 +17,11 @@
 			<li>
 				<a href="shortIntro.html"><b>A short introduction to logback-classic</b></a>
 			</li>
-
 			<li>
-				<a href="apidocs/index.html"><b>javadoc</b></a>
+				<a href="accessLogJetty.html"><b>A short introduction to access logging with logback-access and Jetty</b></a>
+			</li>
+			<li>
+				<a href="apidocs/index.html"><b>Javadoc</b></a>
 			</li>
 		</ul>
 



More information about the logback-dev mailing list