diff --git a/src/site/pages/manual/layouts.html b/src/site/pages/manual/layouts.html index e39b43d..477b3b7 100644 --- a/src/site/pages/manual/layouts.html +++ b/src/site/pages/manual/layouts.html @@ -223,8 +223,8 @@

Configuring
package chapters.layouts;
 
-import ch.qos.logback.classic.;spi.ILoggingEvent;
-import ch.qos.logback.core.;LayoutBase;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.LayoutBase;
 
 public class MySampleLayout2 extends LayoutBase<ILoggingEvent> {
 
@@ -244,19 +244,19 @@ 

Configuring if (prefix != null) { sbuf.append(prefix + ": "); } - sbuf.append(event.;getTimeStamp() - event.getLoggerContextVO(;).getBirthTime(;)); + sbuf.append(event.getTimeStamp() - event.getLoggerContextVO().getBirthTime()); sbuf.append(" "); - sbuf.append(event.;getLevel()); + sbuf.append(event.getLevel()); if (printThreadName) { sbuf.append(" ["); - sbuf.append(event.;getThreadName()); + sbuf.append(event.getThreadName()); sbuf.append("] "); } else { sbuf.append(" "); } - sbuf.append(event.;getLoggerName()); + sbuf.append(event.getLoggerName()); sbuf.append(" - "); - sbuf.append(event.;getFormattedMessage(;)); + sbuf.append(event.getFormattedMessage()); sbuf.append(LINE_SEP); return sbuf.toString(); } @@ -357,31 +357,31 @@

PatternLayout

import org.slf4j.LoggerFactory; -import ch.qos.logback.classic.;Logger; -import ch.qos.logback.classic.;LoggerContext; -import ch.qos.logback.classic.;encoder.PatternLayoutEncoder; -import ch.qos.logback.classic.;spi.ILoggingEvent; -import ch.qos.logback.core.;ConsoleAppender; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.encoder.PatternLayoutEncoder; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.ConsoleAppender; public class PatternSample { static public void main(String[] args) throws Exception { - Logger rootLogger = (Logger)LoggerFactory.;getLogger(Logger.;ROOT_LOGGER_NAME); - LoggerContext loggerContext = rootLogger.getLoggerContext(;); + Logger rootLogger = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); + LoggerContext loggerContext = rootLogger.getLoggerContext(); // we are not interested in auto-configuration loggerContext.reset(); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); - encoder.setContext(;loggerContext); - encoder.setPattern(;"%-5level [%thread]: %message%n"); + encoder.setContext(loggerContext); + encoder.setPattern("%-5level [%thread]: %message%n"); encoder.start(); ConsoleAppender<ILoggingEvent> appender = new ConsoleAppender<ILoggingEvent>(); - appender.setContext(;loggerContext); - appender.setEncoder(;encoder); + appender.setContext(loggerContext); + appender.setEncoder(encoder); appender.start(); - rootLogger.addAppender(;appender); + rootLogger.addAppender(appender); rootLogger.debug("Message 1"); rootLogger.warn("Message 2"); @@ -702,15 +702,15 @@

PatternLayout

following excerpt:

0    [main] DEBUG - logging statement
-Caller+0   at mainPackage.sub.;sample.Bar.sampleMethodName(;Bar.java:22)
-Caller+1   at mainPackage.sub.;sample.Bar.createLoggingRequest(;Bar.java:17)
+Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22) +Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)

And %caller{3} would display this other excerpt:

16   [main] DEBUG - logging statement
-Caller+0   at mainPackage.sub.;sample.Bar.sampleMethodName(;Bar.java:22)
-Caller+1   at mainPackage.sub.;sample.Bar.createLoggingRequest(;Bar.java:17)
-Caller+2   at mainPackage.ConfigTester.;main(ConfigTester.;java:38)
+Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22) +Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17) +Caller+2 at mainPackage.ConfigTester.main(ConfigTester.java:38)

A range specifier can be added to the caller conversion specifier's options to configure the depth range of the information to be displayed. @@ -719,7 +719,7 @@

PatternLayout

For example, %caller{1..2} would display the following excerpt:

0    [main] DEBUG - logging statement
-Caller+0   at mainPackage.sub.;sample.Bar.createLoggingRequest(;Bar.java:17)
+Caller+0 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)

This conversion word can also use evaluators to test logging events against a given criterion before computing @@ -1003,14 +1003,14 @@

PatternLayout

Here is an example:

java.lang.NullPointerException - at com.xyz.Wombat(Wombat.;java:57) ~[wombat-1.3.jar:1.3] - at com.xyz.Wombat(Wombat.;java:76) ~[wombat-1.3.jar:1.3] - at sun.reflect.NativeMethodAccessorImpl.;invoke0(Native Method) ~[na:1.5.0_06] - at sun.reflect.NativeMethodAccessorImpl.;invoke(NativeMethodAccessorImpl.;java:39) ~[na:1.5.0_06] - at sun.reflect.DelegatingMethodAccessorImpl.;invoke(DelegatingMethodAccessorImpl.;java:25) ~[na:1.5.0_06] - at java.lang.reflect.;Method.invoke(Method.;java:585) ~[na:1.5.0_06] - at org.junit.internal.;runners.TestMethod.;invoke(TestMethod.;java:59) [junit-4.4.jar:na] - at org.junit.internal.;runners.MethodRoadie.;runTestMethod(MethodRoadie.;java:98) [junit-4.4.jar:na] + at com.xyz.Wombat(Wombat.java:57) ~[wombat-1.3.jar:1.3] + at com.xyz.Wombat(Wombat.java:76) ~[wombat-1.3.jar:1.3] + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.5.0_06] + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.5.0_06] + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.5.0_06] + at java.lang.reflect.Method.invoke(Method.java:585) ~[na:1.5.0_06] + at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) [junit-4.4.jar:na] + at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) [junit-4.4.jar:na] ...etc

Logback goes to great lengths to ensure that the class @@ -1177,12 +1177,12 @@

PatternLayout

java.lang.NullPointerException
-  at com.xyz.Wombat(Wombat.;java:57) ~[wombat-1.3.jar:1.3]
-  at com.xyz.Wombat(Wombat.;java:76) ~[wombat-1.3.jar:1.3]
-Wrapped by: org.springframework.;BeanCreationException: Error creating bean with name 'wombat':
-  at org.springframework.;AbstractBeanFactory.;getBean(AbstractBeanFactory.;java:248) [spring-2.0.jar:2.0]
-  at org.springframework.;AbstractBeanFactory.;getBean(AbstractBeanFactory.;java:170) [spring-2.0.jar:2.0]
-  at org.apache.catalina.;StandardContext.;listenerStart(StandardContext.;java:3934) [tomcat-6.0.26.jar:6.0.26]
+  at com.xyz.Wombat(Wombat.java:57) ~[wombat-1.3.jar:1.3]
+  at com.xyz.Wombat(Wombat.java:76) ~[wombat-1.3.jar:1.3]
+Wrapped by: org.springframework.BeanCreationException: Error creating bean with name 'wombat':
+  at org.springframework.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) [spring-2.0.jar:2.0]
+  at org.springframework.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) [spring-2.0.jar:2.0]
+  at org.apache.catalina.StandardContext.listenerStart(StandardContext.java:3934) [tomcat-6.0.26.jar:6.0.26]
 

The %rootException converter admits the same optional @@ -1449,11 +1449,11 @@

Grouping with

Assuming without the grouping the output was

-

13:09:30 [main] DEBUG c.q.logback.demo.;ContextListener - Classload hashcode is 13995234 -13:09:30 [main] DEBUG c.q.logback.demo.;ContextListener - Initializing for ServletContext -13:09:30 [main] DEBUG c.q.logback.demo.;ContextListener - Trying platform Mbean server -13:09:30 [pool-1-thread-1] INFO ch.qos.logback.demo.;LoggingTask - Howdydy-diddly-ho - 0 -13:09:38 [btpool0-7] INFO c.q.l.demo.lottery.;LotteryAction - Number: 50 was tried. +

13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Classload hashcode is 13995234 +13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Initializing for ServletContext +13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Trying platform Mbean server +13:09:30 [pool-1-thread-1] INFO ch.qos.logback.demo.LoggingTask - Howdydy-diddly-ho - 0 +13:09:38 [btpool0-7] INFO c.q.l.demo.lottery.LotteryAction - Number: 50 was tried. 13:09:40 [btpool0-7] INFO c.q.l.d.prime.NumberCruncherImpl - Beginning to factor. 13:09:40 [btpool0-7] DEBUG c.q.l.d.prime.NumberCruncherImpl - Trying 2 as a factor. 13:09:40 [btpool0-7] INFO c.q.l.d.prime.NumberCruncherImpl - Found factor 2 @@ -1461,11 +1461,11 @@

Grouping with

with the "%-30()" grouping it would be

-

13:09:30 [main] DEBUG c.q.logback.demo.;ContextListener - Classload hashcode is 13995234 -13:09:30 [main] DEBUG c.q.logback.demo.;ContextListener - Initializing for ServletContext -13:09:30 [main] DEBUG c.q.logback.demo.;ContextListener - Trying platform Mbean server -13:09:30 [pool-1-thread-1] INFO ch.qos.logback.demo.;LoggingTask - Howdydy-diddly-ho - 0 -13:09:38 [btpool0-7] INFO c.q.l.demo.lottery.;LotteryAction - Number: 50 was tried. +

13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Classload hashcode is 13995234 +13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Initializing for ServletContext +13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Trying platform Mbean server +13:09:30 [pool-1-thread-1] INFO ch.qos.logback.demo.LoggingTask - Howdydy-diddly-ho - 0 +13:09:38 [btpool0-7] INFO c.q.l.demo.lottery.LotteryAction - Number: 50 was tried. 13:09:40 [btpool0-7] INFO c.q.l.d.prime.NumberCruncherImpl - Beginning to factor. 13:09:40 [btpool0-7] DEBUG c.q.l.d.prime.NumberCruncherImpl - Trying 2 as a factor. 13:09:40 [btpool0-7] INFO c.q.l.d.prime.NumberCruncherImpl - Found factor 2 @@ -1615,7 +1615,7 @@

Evaluators

message.contains("who calls thee")</expression> </evaluator> - <appender name="STDOUT" class="ch.qos.logback.;core.ConsoleAppender"> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern> %-4relative [%thread] %-5level -%kvp -%msg%n%caller{2, DISP_CALLER_EVAL} @@ -1653,25 +1653,25 @@

Evaluators

import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import ch.qos.logback.classic.;LoggerContext; -import ch.qos.logback.classic.;joran.JoranConfigurator; -import ch.qos.logback.core.;joran.spi.JoranException; -import ch.qos.logback.core.;util.StatusPrinter; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.joran.JoranConfigurator; +import ch.qos.logback.core.joran.spi.JoranException; +import ch.qos.logback.core.util.StatusPrinter; public class CallerEvaluatorExample { public static void main(String[] args) { - Logger logger = LoggerFactory.getLogger(;CallerEvaluatorExample.;class); - LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(;); + Logger logger = LoggerFactory.getLogger(CallerEvaluatorExample.class); + LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); try { JoranConfigurator configurator = new JoranConfigurator(); - configurator.setContext(;lc); - configurator.doConfigure(;args[0]); + configurator.setContext(lc); + configurator.doConfigure(args[0]); } catch (JoranException je) { // StatusPrinter will handle this } - StatusPrinter.printInCaseOfErrorsOrWarnings(;lc); + StatusPrinter.printInCaseOfErrorsOrWarnings(lc); for (int i = 0; i < 5; i++) { if (i == 3) { @@ -1690,7 +1690,7 @@

Evaluators

The command

-

java chapters.layouts.;CallerEvaluatorExample src/main/java/chapters/​layouts/callerEvaluatorConfig.​xml

+

java chapters.layouts.CallerEvaluatorExample src/main/java/chapters/​layouts/callerEvaluatorConfig.​xml

will yield

@@ -1698,7 +1698,7 @@

Evaluators

0 [main] DEBUG - I know me 1 0 [main] DEBUG - I know me 2 0 [main] DEBUG - who calls thee? -Caller+0 at chapters.layouts.;CallerEvaluatorExample.​main(CallerEvaluatorExample.​java:28) +Caller+0 at chapters.layouts.CallerEvaluatorExample.​main(CallerEvaluatorExample.​java:28) 0 [main] DEBUG - I know me 4 @@ -1746,26 +1746,26 @@

Evaluators

import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import ch.qos.logback.classic.;LoggerContext; -import ch.qos.logback.classic.;joran.JoranConfigurator; -import ch.qos.logback.core.;joran.spi.JoranException; -import ch.qos.logback.core.;util.StatusPrinter; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.joran.JoranConfigurator; +import ch.qos.logback.core.joran.spi.JoranException; +import ch.qos.logback.core.util.StatusPrinter; public class ExceptionEvaluatorExample { public static void main(String[] args) { - Logger logger = LoggerFactory.getLogger(;ExceptionEvaluatorExample.;class); - LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(;); + Logger logger = LoggerFactory.getLogger(ExceptionEvaluatorExample.class); + LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); try { JoranConfigurator configurator = new JoranConfigurator(); - configurator.setContext(;lc); + configurator.setContext(lc); lc.reset(); - configurator.doConfigure(;args[0]); + configurator.doConfigure(args[0]); } catch (JoranException je) { // StatusPrinter will handle this } - StatusPrinter.printInCaseOfErrorsOrWarnings(;lc); + StatusPrinter.printInCaseOfErrorsOrWarnings(lc); for (int i = 0; i < 3; i++) { if (i == 1) { @@ -1833,11 +1833,11 @@

Evaluators

logging statement 0 java.lang.Exception: display - at chapters.layouts.;ExceptionEvaluatorExample.;main(ExceptionEvaluatorExample.;java:43) [logback-examples-0.;9.19.jar:na] + at chapters.layouts.ExceptionEvaluatorExample.main(ExceptionEvaluatorExample.java:43) [logback-examples-0.9.19.jar:na] logging statement 1 logging statement 2 java.lang.Exception: display - at chapters.layouts.;ExceptionEvaluatorExample.;main(ExceptionEvaluatorExample.;java:43) [logback-examples-0.;9.19.jar:na]

+ at chapters.layouts.ExceptionEvaluatorExample.main(ExceptionEvaluatorExample.java:43) [logback-examples-0.9.19.jar:na]

Notice how the second log statement has no stack trace. We @@ -1919,9 +1919,9 @@

Step 2

<configuration>
 
   <conversionRule conversionWord="nanos"
-                  converterClass="chapters.;layouts.MySampleConverter" />
+                  converterClass="chapters.layouts.MySampleConverter" />
 
-  <appender name="STDOUT" class="ch.qos.logback.;core.ConsoleAppender">
+  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
       <pattern>%-6nanos [%thread] -%kvp -%msg%n</pattern>
     </encoder>
@@ -2010,9 +2010,9 @@ 

HTMLLayout

<configuration debug="true">
-  <appender name="FILE" class="ch.qos.logback.;core.FileAppender">
-    <encoder class="ch.qos.logback.;core.encoder.LayoutWrappingEncoder">
-      <layout class="ch.qos.logback.;classic.html.HTMLLayout">
+  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+      <layout class="ch.qos.logback.classic.html.HTMLLayout">
         <pattern>%relative%thread%mdc%level%logger%msg</pattern>
       </layout>
     </encoder>
@@ -2084,9 +2084,9 @@ 

CSS

<layout> element, as shown below.

-
<layout class="ch.qos.logback.;classic.html.HTMLLayout">
+
<layout class="ch.qos.logback.classic.html.HTMLLayout">
   <pattern>%relative...%msg</;pattern>
-  <cssBuilder class="ch.qos.logback.;classic.html.UrlCssBuilder">
+  <cssBuilder class="ch.qos.logback.classic.html.UrlCssBuilder">
     <!-- url where the css file is located -->
     <url>http://...</url>
   </cssBuilder>
@@ -2135,10 +2135,10 @@ 

Log4j XMLLayout

<configuration>
-  <appender name="FILE" class="ch.qos.logback.;core.FileAppender">
+  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
     <file>test.xml</file>
-    <encoder class="ch.qos.logback.;core.encoder.LayoutWrappingEncoder">
-      <layout class="ch.qos.logback.;classic.log4j.XMLLayout">
+    <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
+      <layout class="ch.qos.logback.classic.log4j.XMLLayout">
         <locationInfo>true</locationInfo>
       </layout>
     </encoder>