@@ -223,8 +223,8 @@ <h3 class="doAnchor" name="configuringYourOwnLayout">Configuring
223
223
224
224
< pre > < code > package chapters.layouts;
225
225
226
- import ch.qos.logback.classic.; spi.ILoggingEvent;
227
- import ch.qos.logback.core.; LayoutBase;
226
+ import ch.qos.logback.classic.spi.ILoggingEvent;
227
+ import ch.qos.logback.core.LayoutBase;
228
228
229
229
public class MySampleLayout2 extends LayoutBase<ILoggingEvent> {
230
230
@@ -244,19 +244,19 @@ <h3 class="doAnchor" name="configuringYourOwnLayout">Configuring
244
244
< b > if (prefix != null) {
245
245
sbuf.append(prefix + ": ");
246
246
}</ b >
247
- sbuf.append(event.; getTimeStamp() - event.getLoggerContextVO(; ).getBirthTime(; ));
247
+ sbuf.append(event.getTimeStamp() - event.getLoggerContextVO().getBirthTime());
248
248
sbuf.append(" ");
249
- sbuf.append(event.; getLevel());
249
+ sbuf.append(event.getLevel());
250
250
< b > if (printThreadName) {
251
251
sbuf.append(" [");
252
- sbuf.append(event.; getThreadName());
252
+ sbuf.append(event.getThreadName());
253
253
sbuf.append("] ");
254
254
} else {
255
255
sbuf.append(" ");
256
256
}</ b >
257
- sbuf.append(event.; getLoggerName());
257
+ sbuf.append(event.getLoggerName());
258
258
sbuf.append(" - ");
259
- sbuf.append(event.; getFormattedMessage(; ));
259
+ sbuf.append(event.getFormattedMessage());
260
260
sbuf.append(LINE_SEP);
261
261
return sbuf.toString();
262
262
}
@@ -357,31 +357,31 @@ <h2 class="doAnchor" name="ClassicPatternLayout">PatternLayout</h2>
357
357
358
358
import org.slf4j.LoggerFactory;
359
359
360
- import ch.qos.logback.classic.; Logger;
361
- import ch.qos.logback.classic.; LoggerContext;
362
- import ch.qos.logback.classic.; encoder.PatternLayoutEncoder;
363
- import ch.qos.logback.classic.; spi.ILoggingEvent;
364
- import ch.qos.logback.core.; ConsoleAppender;
360
+ import ch.qos.logback.classic.Logger;
361
+ import ch.qos.logback.classic.LoggerContext;
362
+ import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
363
+ import ch.qos.logback.classic.spi.ILoggingEvent;
364
+ import ch.qos.logback.core.ConsoleAppender;
365
365
366
366
public class PatternSample {
367
367
368
368
static public void main(String[] args) throws Exception {
369
- Logger rootLogger = (Logger)LoggerFactory.; getLogger(Logger.; ROOT_LOGGER_NAME);
370
- LoggerContext loggerContext = rootLogger.getLoggerContext(; );
369
+ Logger rootLogger = (Logger)LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME);
370
+ LoggerContext loggerContext = rootLogger.getLoggerContext();
371
371
// we are not interested in auto-configuration
372
372
loggerContext.reset();
373
373
374
374
< b > PatternLayoutEncoder encoder = new PatternLayoutEncoder();</ b >
375
- < b > encoder.setContext(; loggerContext);</ b >
376
- < b > encoder.setPattern(; "%-5level [%thread]: %message%n");</ b >
375
+ < b > encoder.setContext(loggerContext);</ b >
376
+ < b > encoder.setPattern("%-5level [%thread]: %message%n");</ b >
377
377
< b > encoder.start();</ b >
378
378
379
379
ConsoleAppender<ILoggingEvent> appender = new ConsoleAppender<ILoggingEvent> ();
380
- appender.setContext(; loggerContext);
381
- appender.setEncoder(; encoder);
380
+ appender.setContext(loggerContext);
381
+ appender.setEncoder(encoder);
382
382
appender.start();
383
383
384
- rootLogger.addAppender(; appender);
384
+ rootLogger.addAppender(appender);
385
385
386
386
rootLogger.debug("Message 1");
387
387
rootLogger.warn("Message 2");
@@ -702,15 +702,15 @@ <h2 class="doAnchor" name="ClassicPatternLayout">PatternLayout</h2>
702
702
following excerpt:</ p >
703
703
704
704
< pre class ="source white_bg "> 0 [main] DEBUG - logging statement
705
- Caller+0 at mainPackage.sub.; sample.Bar.sampleMethodName(; Bar.java:22)
706
- Caller+1 at mainPackage.sub.; sample.Bar.createLoggingRequest(; Bar.java:17)</ pre >
705
+ Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)
706
+ Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)</ pre >
707
707
708
708
< p > And < b > %caller{3}</ b > would display this other excerpt:</ p >
709
709
710
710
< pre class ="source white_bg "> 16 [main] DEBUG - logging statement
711
- Caller+0 at mainPackage.sub.; sample.Bar.sampleMethodName(; Bar.java:22)
712
- Caller+1 at mainPackage.sub.; sample.Bar.createLoggingRequest(; Bar.java:17)
713
- Caller+2 at mainPackage.ConfigTester.; main(ConfigTester.; java:38)</ pre >
711
+ Caller+0 at mainPackage.sub.sample.Bar.sampleMethodName(Bar.java:22)
712
+ Caller+1 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)
713
+ Caller+2 at mainPackage.ConfigTester.main(ConfigTester.java:38)</ pre >
714
714
715
715
< p > A range specifier can be added to the < em > caller</ em > conversion specifier's
716
716
options to configure the depth range of the information to be displayed.
@@ -719,7 +719,7 @@ <h2 class="doAnchor" name="ClassicPatternLayout">PatternLayout</h2>
719
719
< p > For example, < b > %caller{1..2}</ b > would display the following excerpt:</ p >
720
720
721
721
< pre class ="source white_bg "> 0 [main] DEBUG - logging statement
722
- Caller+0 at mainPackage.sub.; sample.Bar.createLoggingRequest(; Bar.java:17)</ pre >
722
+ Caller+0 at mainPackage.sub.sample.Bar.createLoggingRequest(Bar.java:17)</ pre >
723
723
724
724
< p > This conversion word can also use evaluators to test
725
725
logging events against a given criterion before computing
@@ -1003,14 +1003,14 @@ <h2 class="doAnchor" name="ClassicPatternLayout">PatternLayout</h2>
1003
1003
< p > Here is an example:</ p >
1004
1004
1005
1005
< p class ="source small "> java.lang.NullPointerException
1006
- at com.xyz.Wombat(Wombat.; java:57) < b > < span class ="red "> ~</ span > [wombat-1.3.jar:1.3]</ b >
1007
- at com.xyz.Wombat(Wombat.; java:76) ~[wombat-1.3.jar:1.3]
1008
- at sun.reflect.NativeMethodAccessorImpl.; invoke0(Native Method) ~[na:1.5.0_06]
1009
- at sun.reflect.NativeMethodAccessorImpl.; invoke(NativeMethodAccessorImpl.; java:39) ~[na:1.5.0_06]
1010
- at sun.reflect.DelegatingMethodAccessorImpl.; invoke(DelegatingMethodAccessorImpl.; java:25) ~[na:1.5.0_06]
1011
- at java.lang.reflect.; Method.invoke(Method.; java:585) ~[na:1.5.0_06]
1012
- at org.junit.internal.; runners.TestMethod.; invoke(TestMethod.; java:59) [junit-4.4.jar:na]
1013
- at org.junit.internal.; runners.MethodRoadie.; runTestMethod(MethodRoadie.; java:98) [junit-4.4.jar:na]
1006
+ at com.xyz.Wombat(Wombat.java:57) < b > < span class ="red "> ~</ span > [wombat-1.3.jar:1.3]</ b >
1007
+ at com.xyz.Wombat(Wombat.java:76) ~[wombat-1.3.jar:1.3]
1008
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.5.0_06]
1009
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[na:1.5.0_06]
1010
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[na:1.5.0_06]
1011
+ at java.lang.reflect.Method.invoke(Method.java:585) ~[na:1.5.0_06]
1012
+ at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) [junit-4.4.jar:na]
1013
+ at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) [junit-4.4.jar:na]
1014
1014
...etc </ p >
1015
1015
1016
1016
< p > Logback goes to great lengths to ensure that the class
@@ -1177,12 +1177,12 @@ <h2 class="doAnchor" name="ClassicPatternLayout">PatternLayout</h2>
1177
1177
</ p >
1178
1178
1179
1179
< pre class ="small "> java.lang.NullPointerException
1180
- at com.xyz.Wombat(Wombat.; java:57) ~[wombat-1.3.jar:1.3]
1181
- at com.xyz.Wombat(Wombat.; java:76) ~[wombat-1.3.jar:1.3]
1182
- Wrapped by: org.springframework.; BeanCreationException: Error creating bean with name 'wombat':
1183
- at org.springframework.; AbstractBeanFactory.; getBean(AbstractBeanFactory.; java:248) [spring-2.0.jar:2.0]
1184
- at org.springframework.; AbstractBeanFactory.; getBean(AbstractBeanFactory.; java:170) [spring-2.0.jar:2.0]
1185
- at org.apache.catalina.; StandardContext.; listenerStart(StandardContext.; java:3934) [tomcat-6.0.26.jar:6.0.26]
1180
+ at com.xyz.Wombat(Wombat.java:57) ~[wombat-1.3.jar:1.3]
1181
+ at com.xyz.Wombat(Wombat.java:76) ~[wombat-1.3.jar:1.3]
1182
+ Wrapped by: org.springframework.BeanCreationException: Error creating bean with name 'wombat':
1183
+ at org.springframework.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248) [spring-2.0.jar:2.0]
1184
+ at org.springframework.AbstractBeanFactory.getBean(AbstractBeanFactory.java:170) [spring-2.0.jar:2.0]
1185
+ at org.apache.catalina.StandardContext.listenerStart(StandardContext.java:3934) [tomcat-6.0.26.jar:6.0.26]
1186
1186
</ pre >
1187
1187
1188
1188
< p > The %rootException converter admits the same optional
@@ -1449,23 +1449,23 @@ <h2 class="doAnchor" name="grouping">Grouping with
1449
1449
1450
1450
< p > Assuming without the grouping the output was</ p >
1451
1451
1452
- < p class ="source "> 13:09:30 [main] DEBUG c.q.logback.demo.; ContextListener - Classload hashcode is 13995234
1453
- 13:09:30 [main] DEBUG c.q.logback.demo.; ContextListener - Initializing for ServletContext
1454
- 13:09:30 [main] DEBUG c.q.logback.demo.; ContextListener - Trying platform Mbean server
1455
- 13:09:30 [pool-1-thread-1] INFO ch.qos.logback.demo.; LoggingTask - Howdydy-diddly-ho - 0
1456
- 13:09:38 [btpool0-7] INFO c.q.l.demo.lottery.; LotteryAction - Number: 50 was tried.
1452
+ < p class ="source "> 13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Classload hashcode is 13995234
1453
+ 13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Initializing for ServletContext
1454
+ 13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Trying platform Mbean server
1455
+ 13:09:30 [pool-1-thread-1] INFO ch.qos.logback.demo.LoggingTask - Howdydy-diddly-ho - 0
1456
+ 13:09:38 [btpool0-7] INFO c.q.l.demo.lottery.LotteryAction - Number: 50 was tried.
1457
1457
13:09:40 [btpool0-7] INFO c.q.l.d.prime.NumberCruncherImpl - Beginning to factor.
1458
1458
13:09:40 [btpool0-7] DEBUG c.q.l.d.prime.NumberCruncherImpl - Trying 2 as a factor.
1459
1459
13:09:40 [btpool0-7] INFO c.q.l.d.prime.NumberCruncherImpl - Found factor 2
1460
1460
</ p >
1461
1461
1462
1462
< p > with the "%-30()" grouping it would be</ p >
1463
1463
1464
- < p class ="source "> 13:09:30 [main] DEBUG c.q.logback.demo.; ContextListener - Classload hashcode is 13995234
1465
- 13:09:30 [main] DEBUG c.q.logback.demo.; ContextListener - Initializing for ServletContext
1466
- 13:09:30 [main] DEBUG c.q.logback.demo.; ContextListener - Trying platform Mbean server
1467
- 13:09:30 [pool-1-thread-1] INFO ch.qos.logback.demo.; LoggingTask - Howdydy-diddly-ho - 0
1468
- 13:09:38 [btpool0-7] INFO c.q.l.demo.lottery.; LotteryAction - Number: 50 was tried.
1464
+ < p class ="source "> 13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Classload hashcode is 13995234
1465
+ 13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Initializing for ServletContext
1466
+ 13:09:30 [main] DEBUG c.q.logback.demo.ContextListener - Trying platform Mbean server
1467
+ 13:09:30 [pool-1-thread-1] INFO ch.qos.logback.demo.LoggingTask - Howdydy-diddly-ho - 0
1468
+ 13:09:38 [btpool0-7] INFO c.q.l.demo.lottery.LotteryAction - Number: 50 was tried.
1469
1469
13:09:40 [btpool0-7] INFO c.q.l.d.prime.NumberCruncherImpl - Beginning to factor.
1470
1470
13:09:40 [btpool0-7] DEBUG c.q.l.d.prime.NumberCruncherImpl - Trying 2 as a factor.
1471
1471
13:09:40 [btpool0-7] INFO c.q.l.d.prime.NumberCruncherImpl - Found factor 2
@@ -1615,7 +1615,7 @@ <h2 class="doAnchor" name="Evaluators">Evaluators</h2>
1615
1615
message.contains("who calls thee")</expression>
1616
1616
</evaluator> </ b >
1617
1617
1618
- <appender name="STDOUT" class="ch.qos.logback.; core.ConsoleAppender">
1618
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
1619
1619
<encoder>
1620
1620
<pattern>
1621
1621
%-4relative [%thread] %-5level -%kvp -%msg%n< b > %caller{2, DISP_CALLER_EVAL}</ b >
@@ -1653,25 +1653,25 @@ <h2 class="doAnchor" name="Evaluators">Evaluators</h2>
1653
1653
import org.slf4j.Logger;
1654
1654
import org.slf4j.LoggerFactory;
1655
1655
1656
- import ch.qos.logback.classic.; LoggerContext;
1657
- import ch.qos.logback.classic.; joran.JoranConfigurator;
1658
- import ch.qos.logback.core.; joran.spi.JoranException;
1659
- import ch.qos.logback.core.; util.StatusPrinter;
1656
+ import ch.qos.logback.classic.LoggerContext;
1657
+ import ch.qos.logback.classic.joran.JoranConfigurator;
1658
+ import ch.qos.logback.core.joran.spi.JoranException;
1659
+ import ch.qos.logback.core.util.StatusPrinter;
1660
1660
1661
1661
public class CallerEvaluatorExample {
1662
1662
1663
1663
public static void main(String[] args) {
1664
- Logger logger = LoggerFactory.getLogger(; CallerEvaluatorExample.; class);
1665
- LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(; );
1664
+ Logger logger = LoggerFactory.getLogger(CallerEvaluatorExample.class);
1665
+ LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
1666
1666
1667
1667
try {
1668
1668
JoranConfigurator configurator = new JoranConfigurator();
1669
- configurator.setContext(; lc);
1670
- configurator.doConfigure(; args[0]);
1669
+ configurator.setContext(lc);
1670
+ configurator.doConfigure(args[0]);
1671
1671
} catch (JoranException je) {
1672
1672
// StatusPrinter will handle this
1673
1673
}
1674
- StatusPrinter.printInCaseOfErrorsOrWarnings(; lc);
1674
+ StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
1675
1675
1676
1676
for (int i = 0; i < 5; i++) {
1677
1677
if (i == 3) {
@@ -1690,15 +1690,15 @@ <h2 class="doAnchor" name="Evaluators">Evaluators</h2>
1690
1690
1691
1691
< p > The command</ p >
1692
1692
1693
- < p class ="source "> java chapters.layouts.; CallerEvaluatorExample src/main/java/chapters/​layouts/callerEvaluatorConfig.​xml</ p >
1693
+ < p class ="source "> java chapters.layouts.CallerEvaluatorExample src/main/java/chapters/​layouts/callerEvaluatorConfig.​xml</ p >
1694
1694
1695
1695
< p > will yield</ p >
1696
1696
1697
1697
< div class ="source "> < pre > 0 [main] DEBUG - I know me 0
1698
1698
0 [main] DEBUG - I know me 1
1699
1699
0 [main] DEBUG - I know me 2
1700
1700
0 [main] DEBUG - who calls thee?
1701
- Caller+0 at chapters.layouts.; CallerEvaluatorExample.​main(CallerEvaluatorExample.​java:28)
1701
+ Caller+0 at chapters.layouts.CallerEvaluatorExample.​main(CallerEvaluatorExample.​java:28)
1702
1702
0 [main] DEBUG - I know me 4</ pre > </ div >
1703
1703
1704
1704
@@ -1746,26 +1746,26 @@ <h2 class="doAnchor" name="Evaluators">Evaluators</h2>
1746
1746
import org.slf4j.Logger;
1747
1747
import org.slf4j.LoggerFactory;
1748
1748
1749
- import ch.qos.logback.classic.; LoggerContext;
1750
- import ch.qos.logback.classic.; joran.JoranConfigurator;
1751
- import ch.qos.logback.core.; joran.spi.JoranException;
1752
- import ch.qos.logback.core.; util.StatusPrinter;
1749
+ import ch.qos.logback.classic.LoggerContext;
1750
+ import ch.qos.logback.classic.joran.JoranConfigurator;
1751
+ import ch.qos.logback.core.joran.spi.JoranException;
1752
+ import ch.qos.logback.core.util.StatusPrinter;
1753
1753
1754
1754
public class ExceptionEvaluatorExample {
1755
1755
1756
1756
public static void main(String[] args) {
1757
- Logger logger = LoggerFactory.getLogger(; ExceptionEvaluatorExample.; class);
1758
- LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(; );
1757
+ Logger logger = LoggerFactory.getLogger(ExceptionEvaluatorExample.class);
1758
+ LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory();
1759
1759
1760
1760
try {
1761
1761
JoranConfigurator configurator = new JoranConfigurator();
1762
- configurator.setContext(; lc);
1762
+ configurator.setContext(lc);
1763
1763
lc.reset();
1764
- configurator.doConfigure(; args[0]);
1764
+ configurator.doConfigure(args[0]);
1765
1765
} catch (JoranException je) {
1766
1766
// StatusPrinter will handle this
1767
1767
}
1768
- StatusPrinter.printInCaseOfErrorsOrWarnings(; lc);
1768
+ StatusPrinter.printInCaseOfErrorsOrWarnings(lc);
1769
1769
1770
1770
for (int i = 0; i < 3; i++) {
1771
1771
if (i == 1) {
@@ -1833,11 +1833,11 @@ <h2 class="doAnchor" name="Evaluators">Evaluators</h2>
1833
1833
1834
1834
< p class ="source "> logging statement 0
1835
1835
java.lang.Exception: display
1836
- at chapters.layouts.; ExceptionEvaluatorExample.; main(ExceptionEvaluatorExample.; java:43) [logback-examples-0.; 9.19.jar:na]
1836
+ at chapters.layouts.ExceptionEvaluatorExample.main(ExceptionEvaluatorExample.java:43) [logback-examples-0.9.19.jar:na]
1837
1837
logging statement 1
1838
1838
logging statement 2
1839
1839
java.lang.Exception: display
1840
- at chapters.layouts.; ExceptionEvaluatorExample.; main(ExceptionEvaluatorExample.; java:43) [logback-examples-0.; 9.19.jar:na]</ p >
1840
+ at chapters.layouts.ExceptionEvaluatorExample.main(ExceptionEvaluatorExample.java:43) [logback-examples-0.9.19.jar:na]</ p >
1841
1841
1842
1842
1843
1843
< p > Notice how the second log statement has no stack trace. We
@@ -1919,9 +1919,9 @@ <h4>Step 2</h4>
1919
1919
< pre > < code > <configuration>
1920
1920
1921
1921
< b > <conversionRule conversionWord="nanos"
1922
- converterClass="chapters.; layouts.MySampleConverter" /> </ b >
1922
+ converterClass="chapters.layouts.MySampleConverter" /> </ b >
1923
1923
1924
- <appender name="STDOUT" class="ch.qos.logback.; core.ConsoleAppender">
1924
+ <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
1925
1925
<encoder>
1926
1926
<pattern> < b > %-6nanos</ b > [%thread] -%kvp -%msg%n</pattern>
1927
1927
</encoder>
@@ -2010,9 +2010,9 @@ <h2 class="doAnchor" name="ClassicHTMLLayout">HTMLLayout</h2>
2010
2010
2011
2011
< div id ="htmlLayoutConfig1_legacy " class ="tabcontent ">
2012
2012
< pre > < code > <configuration debug="true">
2013
- <appender name="FILE" class="ch.qos.logback.; core.FileAppender">
2014
- <encoder class="ch.qos.logback.; core.encoder.LayoutWrappingEncoder">
2015
- <layout class="ch.qos.logback.; classic.html.HTMLLayout">
2013
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
2014
+ <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
2015
+ <layout class="ch.qos.logback.classic.html.HTMLLayout">
2016
2016
< b > <pattern>%relative%thread%mdc%level%logger%msg</pattern></ b >
2017
2017
</layout>
2018
2018
</encoder>
@@ -2084,9 +2084,9 @@ <h3>CSS</h3>
2084
2084
< code > <layout></ code > element, as shown below.
2085
2085
</ p >
2086
2086
2087
- < pre > < code > <layout class="ch.qos.logback.; classic.html.HTMLLayout">
2087
+ < pre > < code > <layout class="ch.qos.logback.classic.html.HTMLLayout">
2088
2088
<pattern> %relative...%msg</;pattern>
2089
- <cssBuilder class="ch.qos.logback.; classic.html.UrlCssBuilder">
2089
+ <cssBuilder class="ch.qos.logback.classic.html.UrlCssBuilder">
2090
2090
<!-- url where the css file is located -->
2091
2091
<url> http://...</url>
2092
2092
</cssBuilder>
@@ -2135,10 +2135,10 @@ <h2 class="doAnchor" name="log4jXMLLayout">Log4j XMLLayout</h2>
2135
2135
2136
2136
< div id ="log4jXMLLayout_legacy " class ="tabcontent ">
2137
2137
< pre > < code > <configuration>
2138
- <appender name="FILE" class="ch.qos.logback.; core.FileAppender">
2138
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
2139
2139
<file> test.xml</file>
2140
- <encoder class="ch.qos.logback.; core.encoder.LayoutWrappingEncoder">
2141
- <layout class="ch.qos.logback.; classic.log4j.XMLLayout">
2140
+ <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
2141
+ <layout class="ch.qos.logback.classic.log4j.XMLLayout">
2142
2142
<locationInfo> true</locationInfo>
2143
2143
</layout>
2144
2144
</encoder>
0 commit comments