[logback-dev] svn commit: r666 - in logback/trunk: . logback-classic/examples/src/chapter5 logback-classic/src/main/java/ch/qos/logback/classic logback-classic/src/main/java/org/slf4j logback-site/src/site/xdocTemplates

noreply.seb at qos.ch noreply.seb at qos.ch
Wed Oct 11 17:26:04 CEST 2006


Author: seb
Date: Wed Oct 11 17:26:04 2006
New Revision: 666

Added:
   logback/trunk/logback-classic/examples/src/chapter5/
   logback/trunk/logback-classic/examples/src/chapter5/PatternSample.java
   logback/trunk/logback-site/src/site/xdocTemplates/layouts.xml
Modified:
   logback/trunk/   (props changed)
   logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
   logback/trunk/logback-classic/src/main/java/org/slf4j/LoggerFactory.java
   logback/trunk/logback-site/src/site/xdocTemplates/accessLogJetty.xml
   logback/trunk/logback-site/src/site/xdocTemplates/documentation.xml
   logback/trunk/logback-site/src/site/xdocTemplates/joran.xml

Log:
- corrected javadoc in PatternLayout.java
- supressed call to system.out in LoggerFactory
- added keyword option in accessLogJetty.xml
- added link to layouts.xml in documentation.xml
- added a first working copy of layouts.xml

Added: logback/trunk/logback-classic/examples/src/chapter5/PatternSample.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-classic/examples/src/chapter5/PatternSample.java	Wed Oct 11 17:26:04 2006
@@ -0,0 +1,28 @@
+package chapter5;
+
+import org.slf4j.LoggerFactory;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.PatternLayout;
+import ch.qos.logback.core.ConsoleAppender;
+
+public class PatternSample {
+
+  static public void main(String[] args) throws Exception {
+    Logger rootLogger = (Logger) LoggerFactory.getLogger("root");
+    
+    PatternLayout layout = new PatternLayout();
+    layout.setPattern("%-5level [%thread]: %message%n");
+    layout.start();
+    
+    ConsoleAppender appender = new ConsoleAppender();
+    appender.setContext(rootLogger.getLoggerContext());
+    appender.setLayout(layout);
+    appender.start();
+    
+    rootLogger.addAppender(appender);
+
+    rootLogger.debug("Message 1");
+    rootLogger.warn("Message 2");
+  }
+}
\ No newline at end of file

Modified: logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java	(original)
+++ logback/trunk/logback-classic/src/main/java/ch/qos/logback/classic/PatternLayout.java	Wed Oct 11 17:26:04 2006
@@ -104,7 +104,7 @@
  * logger name is printed in full.
  * 
  * <p>
- * For example, for the category name "a.b.c" the pattern <b>%logger{2}</b>
+ * For example, for the logger name "a.b.c" the pattern <b>%logger{2}</b>
  * will output "b.c". See more examples of name abbreviations further down this
  * document.
  * 
@@ -124,7 +124,7 @@
  * name is output in fully qualified form.
  * 
  * <p>
- * For example, for the class name "org.apache.xyz.SomeClass", the pattern
+ * For example, for the class name "ch.logback.xyz.SomeClass", the pattern
  * <b>%class{1}</b> will output "SomeClass". See more examples of name
  * abbreviations further down this document.
  * 
@@ -153,7 +153,7 @@
  * <p>
  * <b>WARNING</b> Generating caller file information is extremely slow. Its use
  * should be avoided unless execution speed is not an issue.
- * 
+ * </td>
  * </tr>
  * 
  * <tr>
@@ -184,7 +184,7 @@
  * <p>
  * <b>WARNING</b> Generating caller location information is extremely slow.
  * It's use should be avoided unless execution speed is not an issue.
- * 
+ * </td>
  * </tr>
  * 
  * 
@@ -202,7 +202,7 @@
  * <p>
  * <b>WARNING</b> Generating caller location information is extremely slow.
  * It's use should be avoided unless execution speed is not an issue.
- * 
+ * </td>
  * </tr>
  * 
  * <tr>
@@ -215,7 +215,7 @@
  * non-portable line separator strings such as "\n", or "\r\n". Thus, it is the
  * preferred way of specifying a line separator.
  * 
- * 
+ * </td>
  * </tr>
  * 
  * <tr>
@@ -394,7 +394,7 @@
  * characters and truncated if longer.
  * 
  * </dl>
- * <p> Here are a few more examples of the format modifier behaviour, with emphasis on 
+ * <p> Here are a few more examples of the precision specifier behaviour, with emphasis on 
  * the way it affects class names.
  * <p>
  * 

Modified: logback/trunk/logback-classic/src/main/java/org/slf4j/LoggerFactory.java
==============================================================================
--- logback/trunk/logback-classic/src/main/java/org/slf4j/LoggerFactory.java	(original)
+++ logback/trunk/logback-classic/src/main/java/org/slf4j/LoggerFactory.java	Wed Oct 11 17:26:04 2006
@@ -71,7 +71,6 @@
     try { 
       loggerFactory = StaticLoggerBinder.SINGLETON.getLoggerFactory();
       URL url = Loader.getResource("logback-classic.xml");
-      System.out.println("URL = " + url);
       if (url != null) {
         JoranConfigurator configurator = new JoranConfigurator();
         configurator.setContext((Context)loggerFactory);

Modified: logback/trunk/logback-site/src/site/xdocTemplates/accessLogJetty.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/accessLogJetty.xml	(original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/accessLogJetty.xml	Wed Oct 11 17:26:04 2006
@@ -303,17 +303,16 @@
 		</tr>
 
 		<tr>
-			<td align="center"><b>reqParameter</b></td>
+			<td align="center"><b>reqParameter{paramName}</b></td>
 			<td>
 				<p>
 					Parameter of the response. This conversion word can be followed by a key 
 					whose corresponding data will be extracted from the header information.
 				</p>
-				<p>Example: <em>%reqParameter{userName}</em></p>
 			</td>
 		</tr>		
 		<tr>
-			<td align="center"><b>i / header</b></td>
+			<td align="center"><b>i{header} / header{header}</b></td>
 			<td>
 				<p>
 					Request header. Just like the reqParameter
@@ -386,7 +385,7 @@
 			</td>
 		</tr>
 		<tr>
-			<td align="center"><b>reqAttribute</b></td>
+			<td align="center"><b>reqAttribute{attributeName}</b></td>
 			<td>
 				<p>
 					Attribute of the request. Just like the reqParameter
@@ -395,7 +394,7 @@
 			</td>
 		</tr>
 		<tr>
-			<td align="center"><b>reqCookie</b></td>
+			<td align="center"><b>reqCookie{cookie}</b></td>
 			<td>
 				<p>
 					Request cookie. Just like the reqParameter
@@ -404,7 +403,7 @@
 			</td>
 		</tr>
 		<tr>
-			<td align="center"><b>responseHeader</b></td>
+			<td align="center"><b>responseHeader{header}</b></td>
 			<td>
 				<p>
 					Header of the response. Just like the reqParameter

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	Wed Oct 11 17:26:04 2006
@@ -17,12 +17,15 @@
 			<li>
 				<a href="shortIntro.html"><b>A short introduction to logback-classic</b></a>
 			</li>
-
 			<li>
 				<a href="accessLogJetty.html"><b>A short introduction to access logging with logback-access and Jetty</b></a>
 			</li>
 
 			<li>
+				<a href="layouts.html"><b>Layout reference</b></a>
+			</li>
+			
+			<li>
 				<a href="apidocs/index.html"><b>Javadoc</b></a>
 			</li>
 

Modified: logback/trunk/logback-site/src/site/xdocTemplates/joran.xml
==============================================================================
--- logback/trunk/logback-site/src/site/xdocTemplates/joran.xml	(original)
+++ logback/trunk/logback-site/src/site/xdocTemplates/joran.xml	Wed Oct 11 17:26:04 2006
@@ -21,7 +21,7 @@
 </p>
 
 <p>Joran is actually a generic configuration system which can be used
-independently of logging. To emphaises this point, I should mention
+independently of logging. To emphaises this point, We should mention
 that the logback-core module does not have a notion of loggers. In
 that sprit, many of the examples related to this tutorial, have
 nothing to do with loggers, appenders or layouts.
@@ -188,7 +188,7 @@
 	<!-- Pretty dirty, thanks site-generation... -->
 	<p>It creates a <code>RuleStore</code> and a <code>Context</code></p>
 	<p>It adds the <em>hello-world</em> pattern, with it's corresponding action</p>
-	<p>It creates a Joran interpreted, and passes the <code>RuleStore</code></p>
+	<p>It creates a Joran interpreter, and passes the <code>RuleStore</code></p>
 	<p>It creates a SAX parser and parses the given file, specifying the newly created
 	Joran interpreter as the <code>ContentHandler</code></p>
 </ul>

Added: logback/trunk/logback-site/src/site/xdocTemplates/layouts.xml
==============================================================================
--- (empty file)
+++ logback/trunk/logback-site/src/site/xdocTemplates/layouts.xml	Wed Oct 11 17:26:04 2006
@@ -0,0 +1,614 @@
+<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>Layouts</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>What is a layout</h2>
+
+		<p>
+			While appenders are responsible for writing logging output
+			to an appender dependent device, layouts are responsible for
+			the format of the output. In case you were wondering,
+			lay-outs have nothing to do with large estates in Florida.
+			The
+			<code>format()</code>
+			method in the Layout class takes in a object that represents
+			the logging event and returns a String. A synopsis of the
+			Layout interface is shown below.
+		</p>
+		<div class="source">
+			public interface Layout extends ContextAware, LifeCycle {
+
+			String doLayout(Object event);
+
+			String getHeader();
+
+			String getFooter();
+
+			String getContentType();
+		</div>
+		<p>
+			This interface is really simple and yet is sufficent for
+			many formatting needs.
+		</p>
+
+		<!-- Do we add here something about one's personal implementation of Layout?  -->
+
+		<h2>Logback classic</h2>
+
+		<p>
+			As we've seen, a Layout implementation takes as a parameter
+			an object that represents a logging event. The typing of the
+			parameter to <code>Object</code>
+			is because logging events may have different way of being
+			designed. In logback classic, a logging event is represented
+			by the <code>ch.qos.logback.classic.LoggingEvent</code>
+			class. Therefore, all layouts in logback classic implement a
+			sub-interface of <code>Layout</code> named <code>ClassicLayout</code>.
+		</p>
+
+		<p>
+			Here is what a
+			<code>ClassicLayout</code>
+			looks like:
+		</p>
+
+		<div class="source">
+			public interface ClassicLayout extends Layout {
+
+			String doLayout(LoggingEvent event);
+
+			}
+		</div>
+
+		<h3>PatternLayout</h3>
+
+		<p>
+			Logback ships with a flexible layout called <code>PatternLayout</code>. 
+			As all layouts, <code>PatternLayout</code>
+			takes in a logging event and returns a String. However, the
+			returned String can be modified at will by tweaking its
+			conversion pattern. 
+		</p>
+		<p>
+			The conversion pattern of <code>PatternLayout</code>
+			is closely related to the conversion pattern of the
+			<code>printf()</code> function in the C programming language. 
+			A conversion pattern is composed of literal text and format 
+			control expressions called conversion specifiers. 
+			You are free to insert any literal text within the conversion pattern. 
+			Each conversion specifier starts with a percent sign (%) and is followed by
+			optional format modifiers and a conversion character. The
+			conversion character controls the type of data to use, e.g.
+			logger name, level, date, thread name. The format modifiers
+			control such things as field width, padding, and left or
+			right justification. The following is a simple example.
+		</p>
+<em>Example 5.1: Sample usage of a PatternLayout (examples/chapter5/PatternSample.java)</em>
+<div class="source">public class PatternSample {
+
+  static public void main(String[] args) throws Exception {
+    Logger rootLogger = (Logger) LoggerFactory.getLogger("root");
+    
+    <b>PatternLayout layout = new PatternLayout();
+    layout.setPattern("%-5level [%thread]: %message%n");
+    layout.start();</b>
+    
+    ConsoleAppender appender = new ConsoleAppender();
+    appender.setContext(rootLogger.getLoggerContext());
+    appender.setLayout(layout);
+    appender.start();
+    
+    rootLogger.addAppender(appender);
+
+    rootLogger.debug("Message 1");
+    rootLogger.warn("Message 2");
+  }
+}</div>
+
+		<p>
+			The conversion pattern is set to be "%-5level [%thread]: %message%n". 
+			Running PatternSample will yield the following output on the console. 
+		</p>
+<div class="source">DEBUG [main]: Message 1
+WARN  [main]: Message 2</div>
+		<p>
+				Note that in the conversion pattern "%-5level [%thread]: %message%n" 
+				there is no explicit separator between literal text and conversion 
+				specifiers. When parsing a conversion pattern, <code>PatternLayout</code> 
+				is capable of differentiating between literal text (space characters, the brackets, 
+				colon character) and conversion specifiers. In the example above, 
+				the conversion specifier %-5level means the level of the logging event 
+				should be left justified to a width of five characters. 
+				Format specifiers will be explained in a short moment.
+		</p>
+		<p>
+				The recognized conversion characters and words are
+		</p>
+		<table border="1" CELLPADDING="8">
+			<th>Conversion Character or Word</th>
+			<th>Effect</th>
+
+			<tr>
+				<td align="center">
+					<b>c / l / lo / logger</b>
+				</td>
+
+				<td>
+					<p>
+						Used to output the logger of the logging event.
+						The logger conversion specifier can be
+						optionally followed by
+						<em>precision specifier</em>
+						, that is a decimal constant in brackets.
+					</p>
+					<p>
+						If a precision specifier is given, then only the
+						corresponding number of right most components of
+						the logger name will be printed. By default the
+						logger name is printed in full.
+					</p>
+					<p>
+						For example, for the category name "a.b.c" the
+						pattern
+						<b>%logger{2}</b>
+						will output "b.c". See more examples of name
+						abbreviations further down this document.
+					</p>
+				</td>
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>C / class</b>
+				</td>
+
+				<td>
+					<p>
+						Used to output the fully qualified class name of
+						the caller issuing the logging request. This
+						conversion specifier can be optionally followed
+						by
+						<em>precision specifier</em>
+						, that is a decimal constant in brackets.
+					</p>
+					<p>
+						If a precision specifier is given, then only the
+						corresponding number of right most components of
+						the class name will be printed. By default the
+						class name is output in fully qualified form.
+					</p>
+					<p>
+						For example, for the class name
+						"ch.logback.xyz.SomeClass", the pattern
+						<b>%class{1}</b>
+						will output "SomeClass". See more examples of
+						name abbreviations further down this document.
+					</p>
+					<p>
+						<b>WARNING</b>
+						Generating the caller class information is slow.
+						Thus, it's use should be avoided unless
+						execution speed is not an issue.
+					</p>
+				</td>
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>d / date</b>
+				</td>
+				<td>
+					Used to output the date of the logging event. The
+					date conversion specifier may be followed by a set
+					of braces containing a date and time pattern strings
+					{@link java.text.SimpleDateFormat},
+					<em>ABSOLUTE</em>
+					,
+					<em>DATE</em>
+					or
+					<em>ISO8601</em>
+					. For example,
+					<b>%d{HH:mm:ss,SSS}</b>
+					,
+					<b>%d{dd&#160;MMM&#160;yyyy&#160;;HH:mm:ss,SSS}</b>
+					or
+					<b>%d{DATE}</b>
+					. If no date format specifier is given then ISO8601
+					format is assumed.
+				</td>
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>F / file</b>
+				</td>
+
+				<td>
+					<p>
+						Used to output the file name where the logging
+						request was issued.
+					</p>
+					<p>
+						<b>WARNING</b>
+						Generating caller file information is extremely
+						slow. Its use should be avoided unless execution
+						speed is not an issue.
+					</p>
+				</td>
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>caller</b>
+				</td>
+
+				<td>
+					<p>
+						Used to output location information of the
+						caller which generated the logging event.
+					</p>
+					<p>
+						The location information depends on the JVM
+						implementation but usually consists of the fully
+						qualified name of the calling method followed by
+						the caller's source the file name and line
+						number between parentheses.
+					</p>
+					<p>
+						The location information can be very useful.
+						However, it's generation is
+						<em>extremely</em>
+						slow. It's use should be avoided unless
+						execution speed is not an issue.
+					</p>
+				</td>
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>L / line</b>
+				</td>
+
+				<td>
+					<p>
+						Used to output the line number from where the
+						logging request was issued.
+					</p>
+					<p>
+						<b>WARNING</b>
+						Generating caller location information is
+						extremely slow. It's use should be avoided
+						unless execution speed is not an issue.
+					</p>
+				</td>
+			</tr>
+
+
+			<tr>
+				<td align="center">
+					<b>m / msg / message</b>
+				</td>
+				<td>
+					Used to output the application supplied message
+					associated with the logging event.
+				</td>
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>M / method</b>
+				</td>
+
+				<td>
+					<p>
+						Used to output the method name where the logging
+						request was issued.
+					</p>
+					<p>
+						<b>WARNING</b>
+						Generating caller location information is
+						extremely slow. It's use should be avoided
+						unless execution speed is not an issue.
+					</p>
+				</td>
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>n</b>
+				</td>
+
+				<td>
+					<p>
+						Outputs the platform dependent line separator
+						character or characters.
+					</p>
+					<p>
+						This conversion character offers practically the
+						same performance as using non-portable line
+						separator strings such as "\n", or "\r\n". Thus,
+						it is the preferred way of specifying a line
+						separator.
+					</p>
+				</td>
+
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>p / le / level</b>
+				</td>
+				<td>Used to output the level of the logging event.</td>
+			</tr>
+
+			<tr>
+
+				<td align="center">
+					<b>r / relative</b>
+				</td>
+
+				<td>
+					Used to output the number of milliseconds elapsed
+					since the start of the application until the
+					creation of the logging event.
+				</td>
+			</tr>
+
+
+			<tr>
+				<td align="center">
+					<b>t / thread</b>
+				</td>
+
+				<td>
+					Used to output the name of the thread that generated
+					the logging event.
+				</td>
+
+			</tr>
+
+			<tr>
+				<td align="center">
+					<b>X</b>
+				</td>
+
+				<td>
+
+					<p>
+						Used to output the MDC (mapped diagnostic
+						context) associated with the thread that
+						generated the logging event. The
+						<b>X</b>
+						conversion character can be followed by the key
+						for the map placed between braces, as in
+						<b>%X{clientNumber}</b>
+						where
+						<code>clientNumber</code>
+						is the key. The value in the MDC corresponding
+						to the key will be output. If no additional
+						sub-option is specified, then the entire
+						contents of the MDC key value pair set is output
+						using a format key1=val1, key2=val2
+					</p>
+
+					<p>
+						See
+						<a
+							href="http://logback.qos.ch/apidocs/ch/qos/logback/classic/MDC.html">
+							MDC
+						</a>
+						class for more details.
+					</p>
+
+				</td>
+			</tr>
+			<tr>
+				<td align="center">
+					<b>throwable</b>
+				</td>
+
+				<td>
+					<p>
+						Used to output the Throwable trace that has been
+						bound to the LoggingEvent, by default this will
+						output the full trace as one would normally find
+						by a call to Throwable.printStackTrace(). The
+						throwable conversion word can be followed by an
+						option in the form
+						<b>%throwable{short}</b>
+						which will only output the first line of the
+						ThrowableInformation.
+					</p>
+				</td>
+			</tr>
+
+			<tr>
+
+				<td align="center">
+					<b>%</b>
+				</td>
+
+				<td>The sequence %% outputs a single percent sign.</td>
+			</tr>
+
+		</table>
+		<p>
+			By default the relevant information is output as is.
+			However, with the aid of format modifiers it is possible to
+			change the minimum field width, the maximum field width and
+			justification.
+		</p>
+		<p>
+			The optional format modifier is placed between the percent
+			sign and the conversion character or word.
+		</p>
+		<p>
+			The first optional format modifier is the
+			<em>left justification flag</em>
+			which is just the minus (-) character. Then comes the
+			optional
+			<em>minimum field width</em>
+			modifier. This is a decimal constant that represents the
+			minimum number of characters to output. If the data item
+			requires fewer characters, it is padded on either the left
+			or the right until the minimum width is reached. The default
+			is to pad on the left (right justify) but you can specify
+			right padding with the left justification flag. The padding
+			character is space. If the data item is larger than the
+			minimum field width, the field is expanded to accommodate
+			the data. The value is never truncated.
+		</p>
+		<p>
+			This behavior can be changed using the
+			<em>maximum field width</em>
+			modifier which is designated by a period followed by a
+			decimal constant. If the data item is longer than the
+			maximum field, then the extra characters are removed from
+			the
+			<em>beginning</em>
+			of the data item and not from the end. For example, it the
+			maximum field width is eight and the data item is ten
+			characters long, then the first two characters of the data
+			item are dropped. This behavior deviates from the printf
+			function in C where truncation is done from the end.
+		</p>
+		<p>
+			Below are various format modifier examples for the logger
+			conversion specifier.
+		</p>
+
+		<table BORDER="1" CELLPADDING="8">
+			<th>Format modifier</th>
+			<th>Left justify</th>
+			<th>Minimum width</th>
+			<th>Maximum width</th>
+			<th>Comment</th>
+
+			<tr>
+				<td align="center">%20c</td>
+				<td align="center">false</td>
+				<td align="center">20</td>
+				<td align="center">none</td>
+				<td>
+					Left pad with spaces if the category name is less
+					than 20 characters long.
+				</td>
+			</tr>
+			<tr>
+				<td align="center">%-20c</td>
+				<td align="center">true</td>
+				<td align="center">20</td>
+				<td align="center">none</td>
+				<td>
+					Right pad with spaces if the logger name is less
+					than 20 characters long.
+				</td>
+			</tr>
+			<tr>
+				<td align="center">%.30c</td>
+				<td align="center">NA</td>
+				<td align="center">none</td>
+				<td align="center">30</td>
+				<td>
+					Truncate from the beginning if the logger name is
+					longer than 30 characters.
+				</td>
+			</tr>
+			<tr>
+				<td align="center">%20.30c</td>
+				<td align="center">false</td>
+				<td align="center">20</td>
+				<td align="center">30</td>
+				<td>
+					Left pad with spaces if the logger name is shorter
+					than 20 characters. However, if logger name is
+					longer than 30 characters, then truncate from the
+					beginning.
+				</td>
+			</tr>
+			<tr>
+				<td align="center">%-20.30c</td>
+				<td align="center">true</td>
+				<td align="center">20</td>
+				<td align="center">30</td>
+				<td>
+					Right pad with spaces if the logger name is shorter
+					than 20 characters. However, if logger name is
+					longer than 30 characters, then truncate from the
+					beginning.
+				</td>
+			</tr>
+		</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+		<h3>HTMLLayout</h3>
+
+			<em>
+				Example 1.1: Basic template for logging
+				(examples/chapter1/HelloWorld1.java)
+			</em>
+
+
+
+
+
+			<h2>Logback access</h2>
+			<h3>PatternLayout</h3>
+			<h3>HTMLLayout</h3>
+
+</body>
+</document>



More information about the logback-dev mailing list