logback-dev
Threads by month
- ----- 2025 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
March 2010
- 11 participants
- 188 discussions

[GIT] Logback: the generic, reliable, fast and flexible logging framework. branch, master, updated. v0.9.18-53-g0b234ba
by git-noreply@pixie.qos.ch 03 Mar '10
by git-noreply@pixie.qos.ch 03 Mar '10
03 Mar '10
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Logback: the generic, reliable, fast and flexible logging framework.".
The branch, master has been updated
via 0b234ba87bac07b450a46fd472e233c9e181f4ec (commit)
from 650b73413e7b5aa4b0ef2fb59f0e3187c68b0554 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.qos.ch/gitweb/?p=logback.git;a=commit;h=0b234ba87bac07b450a46fd4…
http://github.com/ceki/logback/commit/0b234ba87bac07b450a46fd472e233c9e181f…
commit 0b234ba87bac07b450a46fd472e233c9e181f4ec
Author: Ceki Gulcu <ceki(a)qos.ch>
Date: Wed Mar 3 12:45:21 2010 +0100
- testing the error status code emitted by OutputStreamAppender when a layout is set instead of an encoder
diff --git a/logback-classic/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml b/logback-classic/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml
new file mode 100644
index 0000000..a50b1da
--- /dev/null
+++ b/logback-classic/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml
@@ -0,0 +1,15 @@
+<configuration>
+
+ <appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <file>target/test-output/layoutInsteadOfEncoder.log</file>
+ <append>true</append>
+
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>%msg%n</pattern>
+ </layout>
+ </appender>
+
+ <root level="debug">
+ <appender-ref ref="FILE" />
+ </root>
+</configuration>
\ No newline at end of file
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/LayoutInsteadOfEncoderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/LayoutInsteadOfEncoderTest.java
new file mode 100644
index 0000000..f19db29
--- /dev/null
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/LayoutInsteadOfEncoderTest.java
@@ -0,0 +1,40 @@
+package ch.qos.logback.classic.encoder;
+
+import static ch.qos.logback.core.CoreConstants.CODES_URL;
+import static org.junit.Assert.*;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import ch.qos.logback.classic.ClassicTestConstants;
+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.status.Status;
+import ch.qos.logback.core.status.StatusChecker;
+import ch.qos.logback.core.util.StatusPrinter;
+
+public class LayoutInsteadOfEncoderTest {
+
+ // TeztConstants.TEST_DIR_PREFIX + "input/joran/ignore.xml"
+ JoranConfigurator jc = new JoranConfigurator();
+ LoggerContext loggerContext = new LoggerContext();
+
+ @Before
+ public void setUp() {
+ jc.setContext(loggerContext);
+
+ }
+
+ // jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/ignore.xml");
+
+ @Test
+ public void layoutInsteadOfEncoer() throws JoranException {
+ jc.doConfigure(ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "compatibility/layoutInsteadOfEncoder.xml");
+ StatusPrinter.print(loggerContext);
+ StatusChecker checker = new StatusChecker(loggerContext);
+ assertTrue(checker.containsMatch(Status.ERROR, "This appender no longer admits a layout as a sub-component"));
+ assertTrue(checker.containsMatch(Status.ERROR, "See also "+CODES_URL+"#layoutInsteadOfEncoder for details"));
+ }
+}
-----------------------------------------------------------------------
Summary of changes:
.../joran/compatibility/layoutInsteadOfEncoder.xml | 15 +++++++
.../encoder/LayoutInsteadOfEncoderTest.java | 40 ++++++++++++++++++++
2 files changed, 55 insertions(+), 0 deletions(-)
create mode 100644 logback-classic/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml
create mode 100644 logback-classic/src/test/java/ch/qos/logback/classic/encoder/LayoutInsteadOfEncoderTest.java
hooks/post-receive
--
Logback: the generic, reliable, fast and flexible logging framework.
1
0
Hello,
This is to inform you that I have merge the encoder branch into the
master branch. I am still documenting the changes. In short,
WriterAppeder has been renamed as OutputStreamAppender, FileAppender
now sub-classing the latter. OutputStreamAppender and sub-classes now
take an Encoder instead of a Layout.
Contrary to Layouts which simply transform a logging event into a
String, an encoder is responsible for writing the actual event or more
accurately the representation of the event into the output stream. The
role of the enclosing appender now only manages the output stream
(opening/closing) but not the actual contents written onto the stream.
--
Ceki
2
5

[GIT] Logback: the generic, reliable, fast and flexible logging framework. branch, master, updated. v0.9.18-52-g650b734
by git-noreply@pixie.qos.ch 03 Mar '10
by git-noreply@pixie.qos.ch 03 Mar '10
03 Mar '10
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Logback: the generic, reliable, fast and flexible logging framework.".
The branch, master has been updated
via 650b73413e7b5aa4b0ef2fb59f0e3187c68b0554 (commit)
from 90e50c2f25dcacd6455af8baac5d8cfe6cf10f94 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.qos.ch/gitweb/?p=logback.git;a=commit;h=650b73413e7b5aa4b0ef2fb5…
http://github.com/ceki/logback/commit/650b73413e7b5aa4b0ef2fb59f0e3187c68b0…
commit 650b73413e7b5aa4b0ef2fb59f0e3187c68b0554
Author: Ceki Gulcu <ceki(a)qos.ch>
Date: Wed Mar 3 09:00:43 2010 +0100
- Replaced uses of TeztConstants.TEST_DIR_PREFIX with
ClassicTestConstants.JORAN_INPUT_PREFIX
- added getFile method to ResilientFileOutputStream
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
index 9f4cf27..e2852b9 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/PatternLayoutTest.java
@@ -30,7 +30,6 @@ import ch.qos.logback.classic.pattern.ConverterTest;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.classic.testUtil.SampleConverter;
-import ch.qos.logback.classic.util.TeztConstants;
import ch.qos.logback.core.Context;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.pattern.PatternLayoutBase;
@@ -167,7 +166,7 @@ public class PatternLayoutTest extends AbstractPatternLayoutBaseTest {
@Test
public void testConversionRuleSupportInPatternLayout() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/conversionRule/patternLayout0.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "conversionRule/patternLayout0.xml");
root.getAppender("LIST");
String msg = "Simon says";
logger.debug(msg);
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java
index b17a9ff..deb29c8 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java
@@ -18,6 +18,6 @@ import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
-(a)SuiteClasses(PatternLayoutEncoderTest.class)
+@SuiteClasses( { PatternLayoutEncoderTest.class, LayoutInsteadOfEncoderTest.class})
public class PackageTest {
}
\ No newline at end of file
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
index f1ee47c..8c9cd2e 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/html/HTMLLayoutTest.java
@@ -40,7 +40,6 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.LoggingEvent;
import ch.qos.logback.classic.spi.StackTraceElementProxy;
import ch.qos.logback.classic.spi.ThrowableProxy;
-import ch.qos.logback.classic.util.TeztConstants;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.testUtil.StringListAppender;
@@ -236,8 +235,8 @@ public class HTMLLayoutTest {
@Test
public void testConversionRuleSupportInHtmlLayout() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX
- + "input/joran/conversionRule/htmlLayout0.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "conversionRule/htmlLayout0.xml");
root.getAppender("LIST");
String msg = "Simon says";
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java
index 1fe7fa5..8f2da32 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/joran/EvaluatorJoranTest.java
@@ -23,13 +23,13 @@ import org.junit.Test;
import org.slf4j.Marker;
import org.slf4j.MarkerFactory;
+import ch.qos.logback.classic.ClassicTestConstants;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.boolex.JaninoEventEvaluator;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.LoggingEvent;
-import ch.qos.logback.classic.util.TeztConstants;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.boolex.EvaluationException;
import ch.qos.logback.core.joran.spi.JoranException;
@@ -42,7 +42,7 @@ public class EvaluatorJoranTest {
JoranConfigurator jc = new JoranConfigurator();
LoggerContext loggerContext = new LoggerContext();
jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/simpleEvaluator.xml");
+ jc.doConfigure(ClassicTestConstants.JORAN_INPUT_PREFIX + "simpleEvaluator.xml");
Map evalMap = (Map) loggerContext.getObject(CoreConstants.EVALUATOR_MAP);
@@ -63,7 +63,7 @@ public class EvaluatorJoranTest {
JoranConfigurator jc = new JoranConfigurator();
LoggerContext loggerContext = new LoggerContext();
jc.setContext(loggerContext);
- jc.doConfigure(TeztConstants.TEST_DIR_PREFIX + "input/joran/ignore.xml");
+ jc.doConfigure(ClassicTestConstants.JORAN_INPUT_PREFIX + "ignore.xml");
Map evalMap = (Map) loggerContext.getObject(CoreConstants.EVALUATOR_MAP);
assertNotNull(evalMap);
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
index 58b3855..5b495f5 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/joran/JoranConfiguratorTest.java
@@ -25,6 +25,7 @@ import java.util.Date;
import org.junit.Test;
import org.slf4j.MDC;
+import ch.qos.logback.classic.ClassicTestConstants;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
@@ -32,7 +33,6 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.turbo.DebugUsersTurboFilter;
import ch.qos.logback.classic.turbo.NOPTurboFilter;
import ch.qos.logback.classic.turbo.TurboFilter;
-import ch.qos.logback.classic.util.TeztConstants;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.read.ListAppender;
@@ -53,7 +53,7 @@ public class JoranConfiguratorTest {
@Test
public void simpleList() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/simpleList.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "simpleList.xml");
Logger logger = loggerContext.getLogger(this.getClass().getName());
Logger root = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME);
@@ -68,7 +68,7 @@ public class JoranConfiguratorTest {
@Test
public void level() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/simpleLevel.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "simpleLevel.xml");
ListAppender listAppender = (ListAppender) root.getAppender("LIST");
assertEquals(0, listAppender.list.size());
String msg = "hello world";
@@ -77,13 +77,12 @@ public class JoranConfiguratorTest {
}
@Test
- public void rootLoggerLevelSettingBySystemProperty()
- throws JoranException {
+ public void rootLoggerLevelSettingBySystemProperty() throws JoranException {
String propertyName = "logback.level";
System.setProperty(propertyName, "INFO");
- configure(TeztConstants.TEST_DIR_PREFIX
- + "input/joran/rootLevelByProperty.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "rootLevelByProperty.xml");
// StatusPrinter.print(loggerContext);
ListAppender listAppender = (ListAppender) root.getAppender("LIST");
assertEquals(0, listAppender.list.size());
@@ -98,8 +97,8 @@ public class JoranConfiguratorTest {
String propertyName = "logback.level";
System.setProperty(propertyName, "DEBUG");
- configure(TeztConstants.TEST_DIR_PREFIX
- + "input/joran/loggerLevelByProperty.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "loggerLevelByProperty.xml");
// StatusPrinter.print(loggerContext);
ListAppender listAppender = (ListAppender) root.getAppender("LIST");
assertEquals(0, listAppender.list.size());
@@ -111,20 +110,20 @@ public class JoranConfiguratorTest {
@Test
public void statusListener() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/statusListener.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "statusListener.xml");
// StatusPrinter.print(loggerContext);
}
@Test
public void contextRename() throws JoranException {
loggerContext.setName(CoreConstants.DEFAULT_CONTEXT_NAME);
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/contextRename.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "contextRename.xml");
assertEquals("wombat", loggerContext.getName());
}
@Test
public void eval() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/callerData.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "callerData.xml");
String msg = "hello world";
logger.debug("toto");
@@ -146,7 +145,7 @@ public class JoranConfiguratorTest {
// Although this test uses turbo filters, it only checks
// that Joran can see the xml element and create
// and place the relevant object correctly.
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/turbo.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "turbo.xml");
TurboFilter filter = loggerContext.getTurboFilterList().get(0);
assertTrue(filter instanceof NOPTurboFilter);
@@ -158,7 +157,7 @@ public class JoranConfiguratorTest {
// that Joran can see <user> elements, and behave correctly
// that is call the addUser method and pass the correct values
// to that method.
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/turbo2.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "turbo2.xml");
// StatusPrinter.print(loggerContext.getStatusManager());
@@ -170,7 +169,7 @@ public class JoranConfiguratorTest {
@Test
public void testLevelFilter() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/levelFilter.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "levelFilter.xml");
// StatusPrinter.print(loggerContext);
@@ -190,7 +189,7 @@ public class JoranConfiguratorTest {
@Test
public void testEvaluatorFilter() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/evaluatorFilter.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "evaluatorFilter.xml");
// StatusPrinter.print(loggerContext);
@@ -210,8 +209,8 @@ public class JoranConfiguratorTest {
@Test
public void testTurboDynamicThreshold() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX
- + "input/joran/turboDynamicThreshold.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "turboDynamicThreshold.xml");
ListAppender listAppender = (ListAppender) root.getAppender("LIST");
assertEquals(0, listAppender.list.size());
@@ -230,8 +229,8 @@ public class JoranConfiguratorTest {
@Test
public void testTurboDynamicThreshold2() throws JoranException {
- configure(TeztConstants.TEST_DIR_PREFIX
- + "input/joran/turboDynamicThreshold2.xml");
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "turboDynamicThreshold2.xml");
ListAppender listAppender = (ListAppender) root.getAppender("LIST");
assertEquals(0, listAppender.list.size());
@@ -257,8 +256,8 @@ public class JoranConfiguratorTest {
@Test
public void scan1() throws JoranException, IOException, InterruptedException {
- String configFileAsStr = TeztConstants.TEST_DIR_PREFIX
- + "input/joran/scan1.xml";
+ String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "scan1.xml";
configure(configFileAsStr);
File file = new File(configFileAsStr);
@@ -275,19 +274,20 @@ public class JoranConfiguratorTest {
assertTrue(checker.isErrorFree());
assertTrue(checker.containsMatch("Resetting and reconfiguring context"));
}
-
+
@Test
- public void timestamp() throws JoranException, IOException, InterruptedException {
+ public void timestamp() throws JoranException, IOException,
+ InterruptedException {
- String configFileAsStr = TeztConstants.TEST_DIR_PREFIX
- + "input/joran/timestamp.xml";
+ String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "timestamp.xml";
configure(configFileAsStr);
-
+
String r = loggerContext.getProperty("testTimestamp");
assertNotNull(r);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");
- String expected = sdf.format(new Date());
- assertEquals("expected \""+expected+"\" but got "+r, expected, r);
+ String expected = sdf.format(new Date());
+ assertEquals("expected \"" + expected + "\" but got " + r, expected, r);
}
}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java
index e368a4d..16b2bb3 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/net/SMTPAppender_GreenTest.java
@@ -29,6 +29,7 @@ import org.junit.Before;
import org.junit.Test;
import org.slf4j.MDC;
+import ch.qos.logback.classic.ClassicTestConstants;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.PatternLayout;
@@ -36,7 +37,6 @@ import ch.qos.logback.classic.html.HTMLLayout;
import ch.qos.logback.classic.html.XHTMLEntityResolver;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.classic.spi.ILoggingEvent;
-import ch.qos.logback.classic.util.TeztConstants;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.Layout;
import ch.qos.logback.core.joran.spi.JoranException;
@@ -54,7 +54,7 @@ public class SMTPAppender_GreenTest {
SMTPAppender smtpAppender;
LoggerContext lc = new LoggerContext();
Logger logger = lc.getLogger(this.getClass());
-
+
static final String TEST_SUBJECT = "test subject";
static final String HEADER = "HEADER\n";
static final String FOOTER = "FOOTER\n";
@@ -69,12 +69,11 @@ public class SMTPAppender_GreenTest {
// let the grean mail server get a head start
Thread.sleep(100);
}
-
+
@After
public void tearDown() throws Exception {
greenMail.stop();
}
-
void buildSMTPAppender() throws Exception {
smtpAppender = new SMTPAppender();
@@ -108,9 +107,8 @@ public class SMTPAppender_GreenTest {
return layout;
}
-
-
- private MimeMultipart verify(String subject) throws MessagingException, IOException {
+ private MimeMultipart verify(String subject) throws MessagingException,
+ IOException {
MimeMessage[] mma = greenMail.getReceivedMessages();
assertNotNull(mma);
assertEquals(1, mma.length);
@@ -128,9 +126,9 @@ public class SMTPAppender_GreenTest {
logger.addAppender(smtpAppender);
logger.debug("hello");
logger.error("en error", new Exception("an exception"));
-
+
StatusPrinter.print(lc);
- MimeMultipart mp = verify(TEST_SUBJECT);
+ MimeMultipart mp = verify(TEST_SUBJECT);
String body = GreenMailUtil.getBody(mp.getBodyPart(0));
assertTrue(body.startsWith(HEADER.trim()));
assertTrue(body.endsWith(FOOTER.trim()));
@@ -146,15 +144,14 @@ public class SMTPAppender_GreenTest {
logger.debug("hello");
MDC.clear();
logger.error("en error", new Exception("an exception"));
-
- MimeMultipart mp = verify(TEST_SUBJECT);
+
+ MimeMultipart mp = verify(TEST_SUBJECT);
String body = GreenMailUtil.getBody(mp.getBodyPart(0));
assertTrue(body.startsWith(HEADER.trim()));
assertTrue(body.contains("key=val"));
assertTrue(body.endsWith(FOOTER.trim()));
}
-
@Test
public void html() throws Exception {
buildSMTPAppender();
@@ -163,8 +160,8 @@ public class SMTPAppender_GreenTest {
logger.addAppender(smtpAppender);
logger.debug("hello");
logger.error("en error", new Exception("an exception"));
- MimeMultipart mp = verify(TEST_SUBJECT);
-
+ MimeMultipart mp = verify(TEST_SUBJECT);
+
// verify strict adherence to xhtml1-strict.dtd
SAXReader reader = new SAXReader();
reader.setValidation(true);
@@ -190,9 +187,9 @@ public class SMTPAppender_GreenTest {
logger.debug("hello " + i);
}
logger.error("en error", new Exception("an exception"));
-
- MimeMultipart mp = verify(TEST_SUBJECT);
-
+
+ MimeMultipart mp = verify(TEST_SUBJECT);
+
// verify strict adherence to xhtml1-strict.dtd
SAXReader reader = new SAXReader();
reader.setValidation(true);
@@ -203,21 +200,21 @@ public class SMTPAppender_GreenTest {
private void configure(String file) throws JoranException {
JoranConfigurator jc = new JoranConfigurator();
jc.setContext(lc);
- System.out.println("port="+port);
+ System.out.println("port=" + port);
lc.putProperty("port", "" + port);
jc.doConfigure(file);
}
@Test
- public void testCustomEvaluator() throws Exception {
- configure(TeztConstants.TEST_DIR_PREFIX
- + "input/joran/smtp/customEvaluator.xml");
-
+ public void testCustomEvaluator() throws Exception {
+ configure(ClassicTestConstants.JORAN_INPUT_PREFIX
+ + "smtp/customEvaluator.xml");
+
logger.debug("hello");
String msg2 = "world";
logger.debug(msg2);
logger.debug("invisible");
- MimeMultipart mp = verify(this.getClass().getName()+ " - "+msg2);
+ MimeMultipart mp = verify(this.getClass().getName() + " - " + msg2);
String body = GreenMailUtil.getBody(mp.getBodyPart(0));
assertEquals("helloworld", body);
}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java
index 80333cd..b7ce5da 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/sift/SiftingAppenderTest.java
@@ -22,13 +22,13 @@ import java.util.List;
import org.junit.Test;
import org.slf4j.MDC;
+import ch.qos.logback.classic.ClassicTestConstants;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.classic.spi.LoggingEvent;
-import ch.qos.logback.classic.util.TeztConstants;
import ch.qos.logback.core.joran.spi.JoranException;
import ch.qos.logback.core.read.ListAppender;
import ch.qos.logback.core.sift.AppenderTracker;
@@ -37,7 +37,7 @@ import ch.qos.logback.core.util.StatusPrinter;
public class SiftingAppenderTest {
- static String PREFIX = TeztConstants.TEST_DIR_PREFIX + "input/joran/sift/";
+ static String PREFIX = ClassicTestConstants.JORAN_INPUT_PREFIX + "sift/";
LoggerContext loggerContext = new LoggerContext();
Logger logger = loggerContext.getLogger(this.getClass().getName());
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeTest.java
index 9b56d6f..e7edcc6 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigureOnChangeTest.java
@@ -26,12 +26,12 @@ import org.junit.Before;
import org.junit.Test;
import org.slf4j.helpers.BogoPerf;
+import ch.qos.logback.classic.ClassicTestConstants;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.issue.lbclassic135.LoggingRunnable;
import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.classic.util.TeztConstants;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.contention.MultiThreadedHarness;
import ch.qos.logback.core.contention.RunnableWithCounterAndDone;
@@ -47,11 +47,11 @@ public class ReconfigureOnChangeTest {
// the space in the file name mandated by
// http://jira.qos.ch/browse/LBCORE-119
- final static String SCAN1_FILE_AS_STR = TeztConstants.TEST_DIR_PREFIX
- + "input/turbo/scan 1.xml";
+ final static String SCAN1_FILE_AS_STR = ClassicTestConstants.INPUT_PREFIX
+ + "turbo/scan 1.xml";
- final static String SCAN_LBCLASSIC_154_FILE_AS_STR = TeztConstants.TEST_DIR_PREFIX
- + "input/turbo/scan_lbclassic154.xml";
+ final static String SCAN_LBCLASSIC_154_FILE_AS_STR = ClassicTestConstants.INPUT_PREFIX
+ + "turbo/scan_lbclassic154.xml";
// it actually takes time for Windows to propagate file modification changes
// values below 100 milliseconds can be problematic the same propagation
@@ -83,6 +83,7 @@ public class ReconfigureOnChangeTest {
public void tearDown() {
System.out.println("======= TEST STOP");
}
+
void configure(File file) throws JoranException {
JoranConfigurator jc = new JoranConfigurator();
jc.setContext(loggerContext);
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigurePerf.java b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigurePerf.java
index 4538c89..16a36c0 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigurePerf.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/turbo/ReconfigurePerf.java
@@ -20,12 +20,12 @@ import java.net.MalformedURLException;
import org.junit.Before;
import org.junit.Test;
+import ch.qos.logback.classic.ClassicTestConstants;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.issue.lbclassic135.LoggingRunnable;
import ch.qos.logback.classic.joran.JoranConfigurator;
-import ch.qos.logback.classic.util.TeztConstants;
import ch.qos.logback.core.CoreConstants;
import ch.qos.logback.core.contention.MultiThreadedHarness;
import ch.qos.logback.core.contention.RunnableWithCounterAndDone;
@@ -39,8 +39,8 @@ public class ReconfigurePerf {
// the space in the file name mandated by
// http://jira.qos.ch/browse/LBCORE-119
- final static String CONF_FILE_AS_STR = TeztConstants.TEST_DIR_PREFIX
- + "input/turbo/scan_perf.xml";
+ final static String CONF_FILE_AS_STR = ClassicTestConstants.INPUT_PREFIX
+ + "turbo/scan_perf.xml";
// it actually takes time for Windows to propagate file modification changes
// values below 100 milliseconds can be problematic the same propagation
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/InitializationTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/InitializationTest.java
index e71b424..cfd81ca 100644
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/InitializationTest.java
+++ b/logback-classic/src/test/java/ch/qos/logback/classic/util/InitializationTest.java
@@ -27,6 +27,7 @@ import org.junit.Ignore;
import org.junit.Test;
import org.slf4j.LoggerFactory;
+import ch.qos.logback.classic.ClassicTestConstants;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.core.Appender;
@@ -85,10 +86,10 @@ public class InitializationTest {
@Test
public void autoConfigFromSystemProperties() throws JoranException {
- doAutoConfigFromSystemProperties(TeztConstants.TEST_DIR_PREFIX + "input/autoConfig.xml");
+ doAutoConfigFromSystemProperties(ClassicTestConstants.INPUT_PREFIX + "autoConfig.xml");
doAutoConfigFromSystemProperties("autoConfigAsResource.xml");
// test passing a URL. note the relative path syntax with file:src/test/...
- doAutoConfigFromSystemProperties("file:"+TeztConstants.TEST_DIR_PREFIX + "input/autoConfig.xml");
+ doAutoConfigFromSystemProperties("file:"+ClassicTestConstants.INPUT_PREFIX + "autoConfig.xml");
}
public void doAutoConfigFromSystemProperties(String val) throws JoranException {
@@ -104,7 +105,7 @@ public class InitializationTest {
System.setProperty(ContextInitializer.STATUS_LISTENER_CLASS, TrivialStatusListener.class.getName());
List<StatusListener> sll = lc.getStatusManager().getCopyOfStatusListenerList();
assertEquals(0, sll.size());
- doAutoConfigFromSystemProperties(TeztConstants.TEST_DIR_PREFIX + "input/autoConfig.xml");
+ doAutoConfigFromSystemProperties(ClassicTestConstants.INPUT_PREFIX + "autoConfig.xml");
sll = lc.getStatusManager().getCopyOfStatusListenerList();
assertTrue(sll.size() +" should be 1", sll.size() == 1);
}
@@ -114,7 +115,7 @@ public class InitializationTest {
System.setProperty(ContextInitializer.STATUS_LISTENER_CLASS, ContextInitializer.SYSOUT);
List<StatusListener> sll = lc.getStatusManager().getCopyOfStatusListenerList();
assertEquals(0, sll.size());
- doAutoConfigFromSystemProperties(TeztConstants.TEST_DIR_PREFIX + "input/autoConfig.xml");
+ doAutoConfigFromSystemProperties(ClassicTestConstants.INPUT_PREFIX + "autoConfig.xml");
sll = lc.getStatusManager().getCopyOfStatusListenerList();
assertTrue(sll.size() +" should be 1", sll.size() == 1);
}
diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztConstants.java b/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztConstants.java
deleted file mode 100644
index f92a75f..0000000
--- a/logback-classic/src/test/java/ch/qos/logback/classic/util/TeztConstants.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Logback: the reliable, generic, fast and flexible logging framework.
- * Copyright (C) 1999-2009, QOS.ch. All rights reserved.
- *
- * This program and the accompanying materials are dual-licensed under
- * either the terms of the Eclipse Public License v1.0 as published by
- * the Eclipse Foundation
- *
- * or (per the licensee's choosing)
- *
- * under the terms of the GNU Lesser General Public License version 2.1
- * as published by the Free Software Foundation.
- */
-package ch.qos.logback.classic.util;
-
-/**
- *
- * It seems to bother
- *
- * @author gulcu
- *
- */
-public class TeztConstants {
-
- public static final String TEST_DIR_PREFIX = "src/test/";
-
-
-}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java b/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
index c0c7b1f..373a917 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
@@ -19,6 +19,7 @@ import java.io.OutputStream;
import ch.qos.logback.core.encoder.Encoder;
import ch.qos.logback.core.spi.DeferredProcessingAware;
import ch.qos.logback.core.status.ErrorStatus;
+import static ch.qos.logback.core.CoreConstants.CODES_URL;
/**
* OutputStreamAppender appends events to a {@link OutputStream}. This class
@@ -31,6 +32,7 @@ import ch.qos.logback.core.status.ErrorStatus;
*/
public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
+
/**
* It is the encoder which is ultimately responsible for writing the event to
* an {@link OutputStream}.
@@ -87,6 +89,7 @@ public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
public void setLayout(Layout layout) {
addError("This appender no longer admits a layout as a sub-component, set an encoder instead.");
+ addError("See also "+CODES_URL+"#layoutInsteadOfEncoder for details");
}
@Override
@@ -171,7 +174,7 @@ public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
this.outputStream = outputStream;
if (encoder == null) {
- addWarn("Encoder not yet set. Cannot invoke it's init method");
+ addWarn("Encoder has not been set. Cannot invoke its init method.");
return;
}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java
index 0ae0343..59839c7 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java
@@ -43,6 +43,11 @@ public class ResilientFileOutputStream extends OutputStream {
return fos.getChannel();
}
+
+ public File getFile() {
+ return file;
+ }
+
public void write(byte b[], int off, int len) throws IOException {
// existence of recoveryCoordinator indicates failed state
if (recoveryCoordinator != null && !presumedClean) {
@@ -101,5 +106,4 @@ public class ResilientFileOutputStream extends OutputStream {
fos = new FileOutputStream(file, true);
presumedClean = true;
}
-
}
diff --git a/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java b/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java
index 215a7b3..ad4594e 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/rolling/RollingFileAppender.java
@@ -16,9 +16,9 @@ package ch.qos.logback.core.rolling;
import java.io.File;
import java.io.IOException;
+import static ch.qos.logback.core.CoreConstants.CODES_URL;
import ch.qos.logback.core.FileAppender;
import ch.qos.logback.core.rolling.helper.CompressionMode;
-
/**
* <code>RollingFileAppender</code> extends {@link FileAppender} to backup the
* log files depending on {@link RollingPolicy} and {@link TriggeringPolicy}.
@@ -46,7 +46,7 @@ public class RollingFileAppender<E> extends FileAppender<E> {
if (triggeringPolicy == null) {
addWarn("No TriggeringPolicy was set for the RollingFileAppender named "
+ getName());
- addWarn("For more information, please visit http://logback.qos.ch/codes.html#rfa_no_tp");
+ addWarn("For more information, please visit "+CODES_URL+"#rfa_no_tp");
return;
}
@@ -59,7 +59,7 @@ public class RollingFileAppender<E> extends FileAppender<E> {
if (rollingPolicy == null) {
addError("No RollingPolicy was set for the RollingFileAppender named "
+ getName());
- addError("For more information, please visit http://logback.qos.ch/codes.html#rfa_no_rp");
+ addError("For more information, please visit "+CODES_URL+"rfa_no_rp");
return;
}
@@ -85,7 +85,7 @@ public class RollingFileAppender<E> extends FileAppender<E> {
// allow setting the file name to null if mandated by prudent mode
if (file != null && ((triggeringPolicy != null) || (rollingPolicy != null))) {
addError("File property must be set before any triggeringPolicy or rollingPolicy properties");
- addError("Visit http://logback.qos.ch/codes.html#rfa_file_after for more information");
+ addError("Visit "+CODES_URL+"#rfa_file_after for more information");
}
super.setFile(file);
}
diff --git a/logback-core/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml b/logback-core/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml
deleted file mode 100644
index e69de29..0000000
diff --git a/logback-site/src/site/pages/codes.html b/logback-site/src/site/pages/codes.html
index c52a936..93c98de 100644
--- a/logback-site/src/site/pages/codes.html
+++ b/logback-site/src/site/pages/codes.html
@@ -8,13 +8,14 @@
<link rel="stylesheet" type="text/css" href="css/common.css" />
<link rel="stylesheet" type="text/css" href="css/screen.css" media="screen" />
<link rel="stylesheet" type="text/css" href="css/_print.css" media="print" />
-
+ <link rel="stylesheet" type="text/css" href="css/prettify.css" />
</head>
- <body>
+ <body onload="prettyPrint()">
+ <script type="text/javascript" src="js/prettify.js"></script>
<script type="text/javascript">prefix='';</script>
+ <script src="templates/header.js" type="text/javascript"></script>
- <script src="templates/header.js" type="text/javascript"></script>
<div id="left">
<script src="templates/left.js" type="text/javascript"></script>
</div>
@@ -40,6 +41,77 @@
</p>
<hr/>
+ <!-- =========================================================== -->
+ <p>
+ <a name="layoutInsteadOfEncoder"
+ href="#layoutInsteadOfEncoder">This appender no longer admits a
+ layout as a sub-component, set an encoder instead.</a>
+ </p>
+
+ <p>As of logback version 0.9.19, the <code>WriterAppender</code>
+ class has been renamed as <code>OutputStreamAppender</code>, with
+ <code>FileAppender</code> now sub-classing the
+ latter. <code>OutputStreamAppender</code> and sub-classes now take
+ an <code>Encoder</code> as a sub-component instead of a
+ <code>Layout</code>.
+ </p>
+
+ <p>In practical terms, this means that configuration files need to
+ be changed</p>
+
+ <p class="red bold">from (BAD)</p>
+
+ <pre class="prettyprint source"><appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <file>testFile.log</file>
+ ...
+ <layout class="ch.qos.logback.classic.PatternLayout">
+ <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
+ </layout>
+ </appender> </pre>
+
+ <p class="red bold">or the shorter equivalent (BAD)</p>
+
+ <pre class="prettyprint source"><appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <file>testFile.log</file>
+ ...
+ <!-- layout are assigned the type
+ ch.qos.logback.classic.PatternLayout by default -->
+ <layout>
+ <pattern>%msg%n</pattern>
+ </layout>
+ </appender> </pre>
+
+
+ <p class="green bold">to (GOOD)</p>
+ <pre class="prettyprint source"><appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <file>testFile.log</file>
+ ...
+ <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+ <pattern>%msg%n</pattern>
+ </encode>
+ </appender> </pre>
+
+ <p class="green bold">or the shorter equivalent (GOOD)</p>
+
+ <pre class="prettyprint source"><appender name="FILE" class="ch.qos.logback.core.FileAppender">
+ <file>testFile.log</file>
+ ...
+ <!-- encoders are assigned the type
+ ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
+ <encoder>
+ <pattern>%msg%n</pattern>
+ </encode>
+ </appender> </pre>
+
+
+ <p>We hope to make up for this inconvenience with cool new features
+ which are only possible using encoders.</p>
+
+ <hr/>
+
+
+ <!-- =========================================================== -->
+
<p>
<a name="socket_no_host" href="#socket_no_host">No remote host or
address is set for <code>SocketAppender</code>
@@ -51,12 +123,12 @@
as follows.
</p>
- <p class="source"><appender name="SOCKET"
+ <pre class="prettyprint source"><appender name="SOCKET"
class="ch.qos.logback.classic.net.SocketAppender">
...
<remoteHost>127.0.0.1</remoteHost>
...
-</appender></p>
+</appender></pre>
<hr />
@@ -73,11 +145,11 @@
like this:
</p>
- <p class="source"><appender name="SOCKET" class="ch.qos.logback.classic.net.SocketAppender">
+ <pre class="prettyprint source"><appender name="SOCKET" class="ch.qos.logback.classic.net.SocketAppender">
...
<port>4560</port>
...
-</appender></p>
+</appender></pre>
<hr />
@@ -97,13 +169,13 @@
as follows:
</p>
- <p class="source"><appender name="SMTP" class="ch.qos.logback.classic.net.SMTPAppender">
+ <pre class="prettyprint source"><appender name="SMTP" class="ch.qos.logback.classic.net.SMTPAppender">
...
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%date [%thread] %-5level %logger - %msg%n"></pattern>
</layout>
...
-</appender></p>
+</appender></pre>
<p>SMTPAppender is known to work well with <a
href="manual/layouts.html#ClassicPatternLayout">PatternLayout</a>
diff --git a/logback-site/src/site/pages/css/common.css b/logback-site/src/site/pages/css/common.css
index e1aa3ca..95db3c3 100644
--- a/logback-site/src/site/pages/css/common.css
+++ b/logback-site/src/site/pages/css/common.css
@@ -104,7 +104,7 @@ p.menu {
font-size: smaller;
}
-.strong {
+.strong, .bold {
/*font-size: 13px;*/
font-weight: bold;
}
diff --git a/logback-site/src/site/pages/documentation.html b/logback-site/src/site/pages/documentation.html
index 29f4e95..d02275e 100644
--- a/logback-site/src/site/pages/documentation.html
+++ b/logback-site/src/site/pages/documentation.html
@@ -39,6 +39,10 @@
<a href="faq.html">A Frequently Asked Questions list (FAQ)</a>
</li>
+ <li>
+ <a href="codes.html">Logback error codes and their meanings</a>
+ </li>
+
<li>
<a href="dependencies.html">Dependencies per module</a>
</li>
-----------------------------------------------------------------------
Summary of changes:
.../ch/qos/logback/classic/PatternLayoutTest.java | 3 +-
.../qos/logback/classic/encoder/PackageTest.java | 2 +-
.../qos/logback/classic/html/HTMLLayoutTest.java | 5 +-
.../logback/classic/joran/EvaluatorJoranTest.java | 6 +-
.../classic/joran/JoranConfiguratorTest.java | 58 ++++++------
.../classic/net/SMTPAppender_GreenTest.java | 43 +++++-----
.../logback/classic/sift/SiftingAppenderTest.java | 4 +-
.../classic/turbo/ReconfigureOnChangeTest.java | 11 ++-
.../qos/logback/classic/turbo/ReconfigurePerf.java | 6 +-
.../logback/classic/util/InitializationTest.java | 9 +-
.../ch/qos/logback/classic/util/TeztConstants.java | 28 ------
.../ch/qos/logback/core/OutputStreamAppender.java | 5 +-
.../core/recovery/ResilientFileOutputStream.java | 6 +-
.../logback/core/rolling/RollingFileAppender.java | 8 +-
logback-site/src/site/pages/codes.html | 90 ++++++++++++++++++--
logback-site/src/site/pages/css/common.css | 2 +-
logback-site/src/site/pages/documentation.html | 4 +
17 files changed, 171 insertions(+), 119 deletions(-)
delete mode 100644 logback-classic/src/test/java/ch/qos/logback/classic/util/TeztConstants.java
delete mode 100644 logback-core/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml
hooks/post-receive
--
Logback: the generic, reliable, fast and flexible logging framework.
1
0
JCL loggers don't have configuration - JCL, like SLF4J, is a facade, not an implementation. The jcl-to-slf4j bridge is just about redirecting calls to jcl to end up calling slf4j - there's no configuration involved. The JCL and SLF4J apis are similar, since both are inspired by log4j.
I'm struggling to understand the problem you are trying to solve. That may be my failing of comprehension, but is it possible you have fundamentally misunderstood the relationship between slf4j, the slf4j bridges and logback?
Apologies if you do understand this, but think of the bridges as a funnel to get all the log statements from all those libraries out there that log to different logging systems (log4j, juli, jcl) redirected into SLF4J. Then, once SLF4J is on the receiving end of all log statements, you put an implementation underneath (e.g. logback) which you can configure. You don't need to know what subproject uses what logging machinery because they all end up using logback via slf4j.
----- Original Message -----
What I didn't see right throught he first scan is where the
configuration for the jcl loggers come from. Is it logback.xml, or is it
whatever configuration is present for jcl?
4
9

[GIT] Logback: the generic, reliable, fast and flexible logging framework. branch, master, updated. v0.9.18-51-g90e50c2
by git-noreply@pixie.qos.ch 02 Mar '10
by git-noreply@pixie.qos.ch 02 Mar '10
02 Mar '10
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Logback: the generic, reliable, fast and flexible logging framework.".
The branch, master has been updated
via 90e50c2f25dcacd6455af8baac5d8cfe6cf10f94 (commit)
via 8381bae9d2899def5d9a9420edd2d53811ddba5b (commit)
via 4577cf0a7f55e1162d72691951476d9ae876f0f1 (commit)
via b6bb584c8cb7ff7e6ebf9a0eefcfec48f5a8418c (commit)
via 434a8cf298338f202859806243041721de0b32e6 (commit)
via bf2254414040e25408df3b469ea4b6decd01f304 (commit)
via de7d9343186256b18e4419302923ff024022e638 (commit)
via adae89397fcecee04c69f241db87427cc218d254 (commit)
via 87ceb3d44cefcf454b8635440bc75a37928961ee (commit)
via 4097c6f76343e140bfc7ce11b73a95efceef0655 (commit)
via 96435c32e0541890f5bf3117baf160a5b0a1eb53 (commit)
via e1d24597013b73981e1a1b1d3f518af7db808a58 (commit)
via 576c1625cf8a8f431af78f0a90ba1d8bc7fb21bb (commit)
via 2d9abfae52400cf99ce88470cdf85fb45046b60e (commit)
via 8270ffa0f18e65c70d176d30b71cf748845e0441 (commit)
via b90d74bcaadef20e47ac469d51fee1d1367ca57f (commit)
via 4316ce3c37be6fd8fbad4e9a0645bedb9a487b8e (commit)
via ade00738d1df9cf6d56d3fb98ca28c5977e688d6 (commit)
via 6a3e7041abd4d363afa4b8dd53a132f1f624a65c (commit)
via d2e55bbf1ee4c99949cc82117a3481b8d13dcee7 (commit)
via dfd340815e36f475cd014fd85915dbbafa739d4f (commit)
via e4da8a824934b61ea4d8c885d8f65a8ec3b1e85e (commit)
via e5b5e16ad145327257be746e23153ac14e7bccad (commit)
from abb78264a93de36465e4716f24d75c40b4b583bd (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
Summary of changes:
.../qos/logback/access/PatternLayoutEncoder.java | 19 +
.../ch/qos/logback/access/spi/AccessEvent.java | 3 +-
.../ch/qos/logback/access/jetty/JettyFixture.java | 6 +-
logback-classic/pom.xml | 1 +
.../ch/qos/logback/classic/BasicConfigurator.java | 5 +-
.../classic/encoder/PatternLayoutEncoder.java | 32 +
.../classic/sift/ContextBasedDiscriminator.java | 10 +-
.../sift/JNDIBasedContextDiscriminator.java | 101 ++
.../ch/qos/logback/classic/spi/ILoggingEvent.java | 3 +-
.../ch/qos/logback/classic/spi/LoggingEvent.java | 1 +
.../classic/util/DefaultNestedComponentRules.java | 5 +
.../src/test/input/joran/callerData.xml | 4 +-
.../src/test/input/joran/rolling/basic.xml | 4 +-
.../src/test/input/joran/rolling/timeAndSize.xml | 4 +-
logback-classic/src/test/input/joran/scan1.xml | 4 +-
logback-classic/src/test/input/joran/unique.xml | 4 +-
.../src/test/input/turbo/scan_lbclassic154.xml | 3 -
.../ch/qos/logback/classic/AllClassicTest.java | 1 +
.../qos/logback/classic/encoder/PackageTest.java | 23 +
.../classic/encoder/PatternLayoutEncoderTest.java | 59 +
.../qos/logback/classic/html/HTMLLayoutTest.java | 10 +-
.../issue/lbclassic135/LoggingToFileThrouhput.java | 6 +-
.../lbclassic139/LB139_DeadlockTest.java | 2 +-
.../issue/lbclassic135/lbclassic139/Worker.java | 4 +-
.../logback/classic/multiJVM/FileAppenderPerf.java | 8 +-
.../classic/multiJVM/SafeModeFileAppender.java | 8 +-
.../multiJVM/SafeModeRollingFileAppender.java | 8 +-
.../src/test/resources/recursiveInit.xml | 7 +-
.../main/java/ch/qos/logback/core/Appender.java | 10 -
.../java/ch/qos/logback/core/AppenderBase.java | 21 -
.../java/ch/qos/logback/core/ConsoleAppender.java | 15 +-
.../java/ch/qos/logback/core/CoreConstants.java | 3 +
.../java/ch/qos/logback/core/FileAppender.java | 127 +--
.../ch/qos/logback/core/OutputStreamAppender.java | 224 ++++
.../logback/core/UnsynchronizedAppenderBase.java | 10 -
.../java/ch/qos/logback/core/WriterAppender.java | 280 -----
.../core/db/BindDataSourceToJNDIAction.java | 2 +-
.../ch/qos/logback/core/encoder/ByteArrayUtil.java | 56 +
.../ch/qos/logback/core/encoder/EchoEncoder.java | 48 +
.../java/ch/qos/logback/core/encoder/Encoder.java | 27 +
.../ch/qos/logback/core/encoder/EncoderBase.java | 30 +
.../core/encoder/EventObjectInputStream.java | 160 +++
.../core/encoder/NonClosableInputStream.java | 25 +
.../logback/core/encoder/ObjectStreamEncoder.java | 95 ++
.../logback/core/html/LayoutWrappingEncoder.java | 121 ++
.../core/joran/action/IADataForBasicProperty.java | 2 +-
.../joran/action/IADataForComplexProperty.java | 2 +-
.../core/joran/action/NestedBasicPropertyIA.java | 2 +-
.../core/joran/action/NestedComplexPropertyIA.java | 2 +-
.../qos/logback/core/joran/action/ParamAction.java | 2 +-
.../qos/logback/core/joran/spi/PropertySetter.java | 603 ----------
.../logback/core/joran/util/PropertySetter.java | 501 +++++++++
.../core/joran/util/StringToObjectConverter.java | 135 +++
.../ch/qos/logback/core/net/SMTPAppenderBase.java | 12 +-
.../qos/logback/core/net/SyslogAppenderBase.java | 3 +-
.../core/pattern/PatternLayoutEncoderBase.java | 24 +
.../logback/core/recovery/RecoveryCoordinator.java | 55 +
.../core/recovery/ResilientFileOutputStream.java | 105 ++
.../logback/core/rolling/RollingFileAppender.java | 50 +-
.../logback/core/spi/DeferredProcessingAware.java | 6 +
.../compatibility/layoutInsteadOfEncoder.xml} | 0
.../test/java/ch/qos/logback/core/AllCoreTest.java | 4 +-
.../logback/core/FileAppenderResilienceTest.java | 4 +-
.../ch/qos/logback/core/WriterAppenderTest.java | 19 +-
.../logback/core/appender/ConsoleAppenderTest.java | 34 +-
.../qos/logback/core/appender/DummyAppender.java | 26 -
.../logback/core/appender/DummyAppenderTest.java | 27 +-
.../logback/core/appender/DummyWriterAppender.java | 26 +
.../logback/core/appender/FileAppenderTest.java | 22 +-
.../logback/core/appender/XTeeOutputStream.java | 25 +
.../logback/core/encoder/ByteArrayUtilTest.java | 53 +
.../ch/qos/logback/core/encoder/DummyEncoder.java | 106 ++
.../ch/qos/logback/core/encoder/NopEncoder.java | 29 +
.../core/encoder/ObjectEncodeDecodeTest.java | 81 ++
.../ch/qos/logback/core/encoder/PackageTest.java | 22 +
.../ch/qos/logback/core/joran/PackageTest.java | 1 +
.../core/joran/action/IncludeActionTest.java | 19 +-
.../spi/DefaultNestedComponentRegistryTest.java | 4 +
.../ch/qos/logback/core/joran/spi/PackageTest.java | 2 +-
.../logback/core/joran/spi/PropertySetterTest.java | 389 -------
.../java/ch/qos/logback/core/joran/util/House.java | 169 +++
.../qos/logback/core/joran/util/PackageTest.java | 23 +
.../core/joran/util/PropertySetterTest.java | 247 ++++
.../ch/qos/logback/core/recovery/PackageTest.java | 23 +
.../core/recovery/RecoveryCoordinatorTest.java | 57 +
.../core/rolling/MultiThreadedRollingTest.java | 12 +-
.../ch/qos/logback/core/rolling/RenamingTest.java | 10 +-
.../core/rolling/RollingFileAppenderTest.java | 10 +-
.../core/rolling/ScaffoldingForRollingTests.java | 4 +-
.../core/rolling/SizeAndTimeBasedFNATP_Test.java | 2 +-
.../logback/core/rolling/SizeBasedRollingTest.java | 14 +-
.../logback/core/rolling/TimeBasedRollingTest.java | 2 +-
.../TimeBasedRollingWithArchiveRemovalTest.java | 6 +-
.../core/spi/AppenderAttachableImplTest.java | 25 +-
.../logback/core/testUtil/StringListAppender.java | 2 -
.../src/main/java/chapter1/HelloWorld1.java | 26 -
.../src/main/java/chapter1/HelloWorld2.java | 31 -
.../main/java/chapter10/SimpleConfigurator.java | 64 --
.../main/java/chapter10/calculator/AddAction.java | 69 --
.../java/chapter10/calculator/Calculator1.java | 55 -
.../java/chapter10/calculator/Calculator2.java | 64 --
.../chapter10/calculator/ComputationAction1.java | 61 -
.../chapter10/calculator/ComputationAction2.java | 86 --
.../java/chapter10/calculator/LiteralAction.java | 58 -
.../java/chapter10/calculator/MultiplyAction.java | 66 --
.../main/java/chapter10/helloWorld/HelloWorld.java | 48 -
.../chapter10/helloWorld/HelloWorldAction.java | 35 -
.../main/java/chapter10/implicit/NOPAction.java | 34 -
.../src/main/java/chapter10/implicit/PrintMe.java | 61 -
.../chapter10/implicit/PrintMeImplicitAction.java | 44 -
.../java/chapter10/newRule/NewRuleCalculator.java | 63 --
.../src/main/java/chapter11/Log4jMain.java | 34 -
.../src/main/java/chapter11/LogbackMain.java | 48 -
.../main/java/chapter11/TrivialLog4jAppender.java | 34 -
.../main/java/chapter11/TrivialLog4jLayout.java | 43 -
.../java/chapter11/TrivialLogbackAppender.java | 39 -
.../main/java/chapter11/TrivialLogbackLayout.java | 33 -
logback-examples/src/main/java/chapter2/Bar.java | 25 -
.../src/main/java/chapter2/HelloWorld2.java | 28 -
.../main/java/chapter2/MyAppWithConfigFile.java | 45 -
.../main/java/chapter3/AddStatusListenerApp.java | 41 -
logback-examples/src/main/java/chapter3/Foo.java | 26 -
.../src/main/java/chapter3/MyApp1.java | 30 -
.../src/main/java/chapter3/MyApp2.java | 36 -
.../src/main/java/chapter3/MyApp3.java | 53 -
.../src/main/java/chapter3/additivityFlag.xml | 25 -
.../src/main/java/chapter3/contextName.xml | 15 -
.../src/main/java/chapter3/duplicate.xml | 19 -
.../src/main/java/chapter3/includedConfig.xml | 11 -
.../src/main/java/chapter3/insertFromJNDI.xml | 16 -
.../src/main/java/chapter3/multiple.xml | 19 -
.../main/java/chapter3/onConsoleStatusListener.xml | 19 -
.../src/main/java/chapter3/restricted.xml | 23 -
.../src/main/java/chapter3/sample0.xml | 15 -
.../src/main/java/chapter3/sample1.xml | 15 -
.../src/main/java/chapter3/sample2.xml | 21 -
.../src/main/java/chapter3/sample3.xml | 21 -
.../src/main/java/chapter3/sample4.xml | 19 -
logback-examples/src/main/java/chapter3/scan1.xml | 15 -
logback-examples/src/main/java/chapter3/scan2.xml | 15 -
.../main/java/chapter3/variableSubstitution1.xml | 15 -
.../main/java/chapter3/variableSubstitution2.xml | 13 -
.../main/java/chapter3/variableSubstitution3.xml | 15 -
.../main/java/chapter3/variableSubstitution4.xml | 15 -
.../main/java/chapter4/ConfigurationTester.java | 67 --
.../java/chapter4/CountingConsoleAppender.java | 56 -
.../src/main/java/chapter4/ExitWoes1.java | 48 -
.../src/main/java/chapter4/ExitWoes2.java | 53 -
logback-examples/src/main/java/chapter4/IO.java | 178 ---
.../main/java/chapter4/conf/logback-Console.xml | 14 -
.../java/chapter4/conf/logback-HtmlToConsole.xml | 17 -
.../main/java/chapter4/conf/logback-JMSQueue.xml | 18 -
.../main/java/chapter4/conf/logback-JMSTopic.xml | 18 -
.../src/main/java/chapter4/conf/logback-MDC.xml | 14 -
.../conf/logback-PrudentTimeBasedRolling.xml | 19 -
.../chapter4/conf/logback-RollingFixedWindow.xml | 21 -
.../chapter4/conf/logback-RollingSizeBased.xml | 24 -
.../chapter4/conf/logback-RollingTimeBased.xml | 18 -
.../src/main/java/chapter4/conf/logback-SMTP.xml | 20 -
.../java/chapter4/conf/logback-SMTPWithHtml.xml | 21 -
.../java/chapter4/conf/logback-fileAppender.xml | 15 -
.../src/main/java/chapter4/conf/logback-syslog.xml | 14 -
.../main/java/chapter4/conf/logback-timestamp.xml | 20 -
.../java/chapter4/conf/logbback-sizeAndTime.xml | 26 -
.../src/main/java/chapter4/countingConsole.xml | 19 -
.../java/chapter4/mail/CounterBasedEvaluator.java | 63 --
.../src/main/java/chapter4/mail/EMail.java | 69 --
.../src/main/java/chapter4/mail/Marked_EMail.java | 70 --
.../src/main/java/chapter4/sift/SiftExample.java | 55 -
.../main/java/chapter4/socket/SocketClient1.java | 80 --
.../main/java/chapter4/socket/SocketClient2.java | 73 --
.../src/main/java/chapter4/sub/sample/Bar.java | 34 -
.../main/java/chapter5/CallerEvaluatorExample.java | 48 -
.../java/chapter5/ExceptionEvaluatorExample.java | 47 -
.../src/main/java/chapter5/MySampleConverter.java | 50 -
.../src/main/java/chapter5/MySampleLayout.java | 36 -
.../src/main/java/chapter5/MySampleLayout2.java | 54 -
.../src/main/java/chapter5/PatternSample.java | 42 -
.../src/main/java/chapter5/SampleLogging.java | 44 -
.../src/main/java/chapter5/TestException.java | 23 -
.../src/main/java/chapter6/FilterEvents.java | 59 -
logback-examples/src/main/java/chapter6/GoMDC.java | 48 -
.../src/main/java/chapter6/SampleFilter.java | 30 -
.../src/main/java/chapter6/SampleTurboFilter.java | 59 -
.../src/main/java/chapter7/NumberCruncher.java | 29 -
.../main/java/chapter7/NumberCruncherClient.java | 86 --
.../main/java/chapter7/NumberCruncherServer.java | 162 ---
.../src/main/java/chapter7/SimpleMDC.java | 94 --
.../src/main/java/chapter7/UserServletFilter.java | 98 --
.../chapters/appenders/ConfigurationTester.java | 61 +
.../appenders/CountingConsoleAppender.java | 78 ++
.../main/java/chapters/appenders/ExitWoes1.java | 46 +
.../main/java/chapters/appenders/ExitWoes2.java | 51 +
.../src/main/java/chapters/appenders/IO.java | 181 +++
.../appenders}/conf/access/logback-DB.xml | 0
.../appenders}/conf/access/logback-SMTP.xml | 0
.../chapters/appenders/conf/logback-Console.xml | 15 +
.../appenders/conf/logback-HtmlToConsole.xml | 16 +
.../chapters/appenders/conf/logback-JMSQueue.xml | 17 +
.../chapters/appenders/conf/logback-JMSTopic.xml | 17 +
.../java/chapters/appenders/conf/logback-MDC.xml | 13 +
.../conf/logback-PrudentTimeBasedRolling.xml | 19 +
.../appenders/conf/logback-RollingFixedWindow.xml | 22 +
.../appenders/conf/logback-RollingSizeBased.xml | 23 +
.../appenders/conf/logback-RollingTimeBased.xml | 19 +
.../java/chapters/appenders/conf/logback-SMTP.xml | 19 +
.../appenders/conf/logback-SMTPWithHtml.xml | 20 +
.../appenders/conf/logback-fileAppender.xml | 17 +
.../chapters/appenders/conf/logback-syslog.xml | 13 +
.../chapters/appenders/conf/logback-timestamp.xml | 20 +
.../appenders/conf/logbback-sizeAndTime.xml | 23 +
.../java/chapters/appenders/countingConsole.xml | 19 +
.../appenders}/db/append-and-share-with-jndi.xml | 0
.../append-toMySQL-with-datasource-and-pooling.xml | 0
.../db/append-toMySQL-with-datasource.xml | 0
.../db/append-toMySQL-with-driverManager.xml | 0
.../appenders}/db/append-with-c3p0.xml | 0
.../appenders}/db/append-with-datasource.xml | 0
.../appenders}/db/append-with-drivermanager.xml | 0
.../db/append-with-pooled-datasource.xml | 0
.../appenders/mail/CounterBasedEvaluator.java | 63 ++
.../main/java/chapters/appenders/mail/EMail.java | 69 ++
.../java/chapters/appenders/mail/Marked_EMail.java | 70 ++
.../appenders}/mail/gmailSSL.xml | 0
.../appenders}/mail/gmailSTARTTLS.xml | 0
.../appenders}/mail/mail1.xml | 0
.../appenders}/mail/mail2.xml | 0
.../appenders}/mail/mail3.xml | 0
.../appenders}/mail/mailWithMarker.xml | 0
.../appenders/onJoran/SimpleConfigurator.java | 64 ++
.../appenders/onJoran/calculator/AddAction.java | 69 ++
.../appenders/onJoran/calculator/Calculator1.java | 55 +
.../appenders/onJoran/calculator/Calculator2.java | 64 ++
.../onJoran/calculator/ComputationAction1.java | 61 +
.../onJoran/calculator/ComputationAction2.java | 86 ++
.../onJoran/calculator/LiteralAction.java | 58 +
.../onJoran/calculator/MultiplyAction.java | 66 ++
.../appenders/onJoran}/calculator/calculator1.xml | 0
.../appenders/onJoran}/calculator/calculator2.xml | 0
.../appenders/onJoran}/calculator/calculator3.xml | 0
.../appenders/onJoran}/calculator/readme.txt | 0
.../appenders/onJoran/helloWorld/HelloWorld.java | 48 +
.../onJoran/helloWorld/HelloWorldAction.java | 35 +
.../appenders/onJoran}/helloWorld/hello.xml | 0
.../appenders/onJoran}/helloWorld/readme.txt | 0
.../appenders/onJoran/implicit/NOPAction.java | 34 +
.../appenders/onJoran/implicit/PrintMe.java | 61 +
.../onJoran/implicit/PrintMeImplicitAction.java | 44 +
.../appenders/onJoran}/implicit/implicit1.xml | 0
.../appenders/onJoran}/implicit/readme.txt | 0
.../onJoran/newRule/NewRuleCalculator.java | 63 ++
.../appenders/onJoran}/newRule/new-rule.xml | 0
.../appenders/onJoran}/newRule/readme.txt | 0
.../java/chapters/appenders/sift/SiftExample.java | 55 +
.../appenders}/sift/access-siftingFile.xml | 0
.../appenders}/sift/byUserid.xml | 0
.../chapters/appenders/socket/SocketClient1.java | 80 ++
.../chapters/appenders/socket/SocketClient2.java | 73 ++
.../appenders}/socket/client1.xml | 0
.../appenders}/socket/server1.xml | 0
.../appenders}/socket/server2.xml | 0
.../java/chapters/appenders/sub/sample/Bar.java | 34 +
.../src/main/java/chapters/architecture/Bar.java | 25 +
.../java/chapters/architecture/HelloWorld2.java | 28 +
.../chapters/architecture/MyAppWithConfigFile.java | 45 +
.../architecture}/sample-config-1.xml | 0
.../architecture}/sample-config-2.xml | 0
.../architecture}/sample-config-3.xml | 0
.../configuration/AddStatusListenerApp.java | 41 +
.../src/main/java/chapters/configuration/Foo.java | 26 +
.../main/java/chapters/configuration/MyApp1.java | 30 +
.../main/java/chapters/configuration/MyApp2.java | 36 +
.../main/java/chapters/configuration/MyApp3.java | 53 +
.../java/chapters/configuration/additivityFlag.xml | 26 +
.../configuration}/containingConfig.xml | 0
.../java/chapters/configuration/contextName.xml | 15 +
.../main/java/chapters/configuration/duplicate.xml | 19 +
.../java/chapters/configuration/includedConfig.xml | 13 +
.../java/chapters/configuration/insertFromJNDI.xml | 18 +
.../main/java/chapters/configuration/multiple.xml | 21 +
.../configuration/onConsoleStatusListener.xml | 21 +
.../java/chapters/configuration/restricted.xml | 25 +
.../main/java/chapters/configuration/sample0.xml | 17 +
.../main/java/chapters/configuration/sample1.xml | 17 +
.../main/java/chapters/configuration/sample2.xml | 23 +
.../main/java/chapters/configuration/sample3.xml | 24 +
.../main/java/chapters/configuration/sample4.xml | 21 +
.../src/main/java/chapters/configuration/scan1.xml | 17 +
.../src/main/java/chapters/configuration/scan2.xml | 15 +
.../configuration/variableSubstitution1.xml | 15 +
.../configuration/variableSubstitution2.xml | 13 +
.../configuration/variableSubstitution3.xml | 15 +
.../configuration/variableSubstitution4.xml | 15 +
.../configuration}/variables1.properties | 0
.../configuration}/variables2.properties | 0
.../main/java/chapters/filters/FilterEvents.java | 59 +
.../src/main/java/chapters/filters/GoMDC.java | 48 +
.../main/java/chapters/filters/SampleFilter.java | 30 +
.../java/chapters/filters/SampleTurboFilter.java | 59 +
.../filters}/accessEventEvaluator.xml | 0
.../filters}/accessEventEvaluator2.xml | 0
.../filters}/basicConfiguration.xml | 0
.../filters}/basicEventEvaluator.xml | 0
.../filters}/duplicateMessage.xml | 0
.../filters}/evaluatorWithMatcher.xml | 0
.../filters}/levelFilterConfig.xml | 0
.../{chapter6 => chapters/filters}/mdcfilter.xml | 0
.../filters}/sampleFilterConfig.xml | 0
.../filters}/sampleTurboFilterConfig.xml | 0
.../filters}/thresholdFilterConfig.xml | 0
.../filters}/turboFilters.xml | 0
.../java/chapters/introduction/HelloWorld1.java | 26 +
.../java/chapters/introduction/HelloWorld2.java | 31 +
.../chapters/layouts/CallerEvaluatorExample.java | 48 +
.../layouts/ExceptionEvaluatorExample.java | 47 +
.../java/chapters/layouts/MySampleConverter.java | 50 +
.../main/java/chapters/layouts/MySampleLayout.java | 36 +
.../java/chapters/layouts/MySampleLayout2.java | 54 +
.../main/java/chapters/layouts/PatternSample.java | 42 +
.../main/java/chapters/layouts/SampleLogging.java | 44 +
.../main/java/chapters/layouts/TestException.java | 23 +
.../layouts}/callerEvaluatorConfig.xml | 0
.../layouts}/exceptionEvaluatorConfig.xml | 0
.../layouts}/mySampleConverterConfig.xml | 0
.../layouts}/sampleLayoutConfig.xml | 0
.../layouts}/sampleLayoutConfig2.xml | 0
.../src/main/java/chapters/mdc/NumberCruncher.java | 29 +
.../java/chapters/mdc/NumberCruncherClient.java | 86 ++
.../java/chapters/mdc/NumberCruncherServer.java | 162 +++
.../src/main/java/chapters/mdc/SimpleMDC.java | 94 ++
.../main/java/chapters/mdc/UserServletFilter.java | 98 ++
.../main/java/{chapter7 => chapters/mdc}/mdc1.xml | 0
.../java/{chapter7 => chapters/mdc}/simpleMDC.xml | 0
.../chapters/migrationFromLog4j/Log4jMain.java | 34 +
.../chapters/migrationFromLog4j/LogbackMain.java | 48 +
.../migrationFromLog4j/TrivialLog4jAppender.java | 34 +
.../migrationFromLog4j/TrivialLog4jLayout.java | 43 +
.../migrationFromLog4j/TrivialLogbackAppender.java | 60 +
.../migrationFromLog4j/TrivialLogbackLayout.java | 33 +
.../migrationFromLog4j}/log4jTrivial.properties | 0
.../migrationFromLog4j}/logback-trivial.xml | 0
logback-site/src/site/pages/documentation.html | 3 +
logback-site/src/site/pages/index.html | 26 +-
logback-site/src/site/pages/manual/appenders.html | 388 +++-----
.../src/site/pages/manual/architecture.html | 29 +-
.../src/site/pages/manual/configuration.html | 610 ++++++-----
.../src/site/pages/manual/introduction.html | 32 +-
.../src/site/pages/manual/migrationFromLog4j.html | 5 +-
logback-site/src/site/pages/manual/onJoran.html | 14 +-
.../src/site/pages/manual/underTheHood.html | 2 +-
logback-site/src/site/pages/reasonsToSwitch.html | 216 ++++
logback-site/src/site/pages/templates/footer.js | 15 +-
.../manual/images/chapters/appenders/appender.uml | 1179 ++++++++++++++++++++
.../manual/images/chapters/appenders/appender.~ml | 865 ++++++++++++++
.../chapters/appenders/appenderClassDiagram.jpg | Bin 0 -> 71199 bytes
.../appenders}/dbAppenderLE.gif | Bin 31272 -> 31272 bytes
.../appenders}/dbAppenderLEException.gif | Bin 3861 -> 3861 bytes
.../appenders}/dbAppenderLEProperty.gif | Bin 3820 -> 3820 bytes
.../appenders}/fileAppenderUML.png | Bin 6684 -> 6684 bytes
.../appenders}/smtpAppender1.jpg | Bin 226207 -> 226207 bytes
.../appenders}/smtpAppender2.jpg | Bin 244223 -> 244223 bytes
.../architecture}/underTheHoodSequence2.gif | Bin 71138 -> 71138 bytes
.../architecture}/underTheHoodSequence2_small.gif | Bin 23063 -> 23063 bytes
.../configuration}/appenderSyntax.png | Bin 4541 -> 4541 bytes
.../configuration}/basicSyntax.png | Bin 2950 -> 2950 bytes
.../configuration}/lbClassicStatus.jpg | Bin 176313 -> 176313 bytes
.../configuration}/sample.xml | 0
.../{chapter6 => chapters/filters}/filterChain.gif | Bin 1226 -> 1226 bytes
.../jmxConfigurator}/jconsole15_jetty.gif | Bin 9796 -> 9796 bytes
.../jmxConfigurator}/jconsole15_tomcat.gif | Bin 9741 -> 9741 bytes
.../jmxConfigurator}/jmxConfigurator.gif | Bin 33445 -> 33445 bytes
.../jmxConfigurator}/multiple.gif | Bin 22501 -> 22501 bytes
.../jmxConfigurator}/mx4j_jetty.gif | Bin 26973 -> 26973 bytes
.../jmxConfigurator}/mx4j_tomcat.gif | Bin 27657 -> 27657 bytes
.../jmxConfigurator}/statusList.gif | Bin 36223 -> 36223 bytes
375 files changed, 9690 insertions(+), 6068 deletions(-)
create mode 100644 logback-access/src/main/java/ch/qos/logback/access/PatternLayoutEncoder.java
create mode 100644 logback-classic/src/main/java/ch/qos/logback/classic/encoder/PatternLayoutEncoder.java
create mode 100644 logback-classic/src/main/java/ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.java
create mode 100644 logback-classic/src/test/java/ch/qos/logback/classic/encoder/PackageTest.java
create mode 100644 logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
delete mode 100644 logback-core/src/main/java/ch/qos/logback/core/WriterAppender.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/encoder/ByteArrayUtil.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/encoder/EchoEncoder.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/encoder/Encoder.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/encoder/EncoderBase.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/encoder/EventObjectInputStream.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/encoder/NonClosableInputStream.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/encoder/ObjectStreamEncoder.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/html/LayoutWrappingEncoder.java
delete mode 100644 logback-core/src/main/java/ch/qos/logback/core/joran/spi/PropertySetter.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/joran/util/PropertySetter.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/joran/util/StringToObjectConverter.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/pattern/PatternLayoutEncoderBase.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/recovery/RecoveryCoordinator.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/recovery/ResilientFileOutputStream.java
create mode 100644 logback-core/src/main/java/ch/qos/logback/core/spi/DeferredProcessingAware.java
copy logback-core/src/test/{witness/rolling/tbr-test1.0 => input/joran/compatibility/layoutInsteadOfEncoder.xml} (100%)
delete mode 100644 logback-core/src/test/java/ch/qos/logback/core/appender/DummyAppender.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/appender/DummyWriterAppender.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/appender/XTeeOutputStream.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/encoder/ByteArrayUtilTest.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/encoder/DummyEncoder.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/encoder/NopEncoder.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/encoder/ObjectEncodeDecodeTest.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/encoder/PackageTest.java
delete mode 100644 logback-core/src/test/java/ch/qos/logback/core/joran/spi/PropertySetterTest.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/joran/util/House.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/joran/util/PackageTest.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/joran/util/PropertySetterTest.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/recovery/PackageTest.java
create mode 100644 logback-core/src/test/java/ch/qos/logback/core/recovery/RecoveryCoordinatorTest.java
delete mode 100644 logback-examples/src/main/java/chapter1/HelloWorld1.java
delete mode 100644 logback-examples/src/main/java/chapter1/HelloWorld2.java
delete mode 100644 logback-examples/src/main/java/chapter10/SimpleConfigurator.java
delete mode 100644 logback-examples/src/main/java/chapter10/calculator/AddAction.java
delete mode 100644 logback-examples/src/main/java/chapter10/calculator/Calculator1.java
delete mode 100644 logback-examples/src/main/java/chapter10/calculator/Calculator2.java
delete mode 100644 logback-examples/src/main/java/chapter10/calculator/ComputationAction1.java
delete mode 100644 logback-examples/src/main/java/chapter10/calculator/ComputationAction2.java
delete mode 100644 logback-examples/src/main/java/chapter10/calculator/LiteralAction.java
delete mode 100644 logback-examples/src/main/java/chapter10/calculator/MultiplyAction.java
delete mode 100644 logback-examples/src/main/java/chapter10/helloWorld/HelloWorld.java
delete mode 100644 logback-examples/src/main/java/chapter10/helloWorld/HelloWorldAction.java
delete mode 100644 logback-examples/src/main/java/chapter10/implicit/NOPAction.java
delete mode 100644 logback-examples/src/main/java/chapter10/implicit/PrintMe.java
delete mode 100644 logback-examples/src/main/java/chapter10/implicit/PrintMeImplicitAction.java
delete mode 100644 logback-examples/src/main/java/chapter10/newRule/NewRuleCalculator.java
delete mode 100644 logback-examples/src/main/java/chapter11/Log4jMain.java
delete mode 100644 logback-examples/src/main/java/chapter11/LogbackMain.java
delete mode 100644 logback-examples/src/main/java/chapter11/TrivialLog4jAppender.java
delete mode 100644 logback-examples/src/main/java/chapter11/TrivialLog4jLayout.java
delete mode 100644 logback-examples/src/main/java/chapter11/TrivialLogbackAppender.java
delete mode 100644 logback-examples/src/main/java/chapter11/TrivialLogbackLayout.java
delete mode 100644 logback-examples/src/main/java/chapter2/Bar.java
delete mode 100644 logback-examples/src/main/java/chapter2/HelloWorld2.java
delete mode 100644 logback-examples/src/main/java/chapter2/MyAppWithConfigFile.java
delete mode 100644 logback-examples/src/main/java/chapter3/AddStatusListenerApp.java
delete mode 100644 logback-examples/src/main/java/chapter3/Foo.java
delete mode 100644 logback-examples/src/main/java/chapter3/MyApp1.java
delete mode 100644 logback-examples/src/main/java/chapter3/MyApp2.java
delete mode 100644 logback-examples/src/main/java/chapter3/MyApp3.java
delete mode 100644 logback-examples/src/main/java/chapter3/additivityFlag.xml
delete mode 100644 logback-examples/src/main/java/chapter3/contextName.xml
delete mode 100644 logback-examples/src/main/java/chapter3/duplicate.xml
delete mode 100644 logback-examples/src/main/java/chapter3/includedConfig.xml
delete mode 100644 logback-examples/src/main/java/chapter3/insertFromJNDI.xml
delete mode 100644 logback-examples/src/main/java/chapter3/multiple.xml
delete mode 100644 logback-examples/src/main/java/chapter3/onConsoleStatusListener.xml
delete mode 100644 logback-examples/src/main/java/chapter3/restricted.xml
delete mode 100644 logback-examples/src/main/java/chapter3/sample0.xml
delete mode 100644 logback-examples/src/main/java/chapter3/sample1.xml
delete mode 100644 logback-examples/src/main/java/chapter3/sample2.xml
delete mode 100644 logback-examples/src/main/java/chapter3/sample3.xml
delete mode 100644 logback-examples/src/main/java/chapter3/sample4.xml
delete mode 100644 logback-examples/src/main/java/chapter3/scan1.xml
delete mode 100644 logback-examples/src/main/java/chapter3/scan2.xml
delete mode 100644 logback-examples/src/main/java/chapter3/variableSubstitution1.xml
delete mode 100644 logback-examples/src/main/java/chapter3/variableSubstitution2.xml
delete mode 100644 logback-examples/src/main/java/chapter3/variableSubstitution3.xml
delete mode 100644 logback-examples/src/main/java/chapter3/variableSubstitution4.xml
delete mode 100644 logback-examples/src/main/java/chapter4/ConfigurationTester.java
delete mode 100644 logback-examples/src/main/java/chapter4/CountingConsoleAppender.java
delete mode 100644 logback-examples/src/main/java/chapter4/ExitWoes1.java
delete mode 100644 logback-examples/src/main/java/chapter4/ExitWoes2.java
delete mode 100644 logback-examples/src/main/java/chapter4/IO.java
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-Console.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-HtmlToConsole.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-JMSQueue.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-JMSTopic.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-MDC.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-PrudentTimeBasedRolling.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-RollingFixedWindow.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-RollingSizeBased.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-RollingTimeBased.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-SMTP.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-SMTPWithHtml.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-fileAppender.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-syslog.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logback-timestamp.xml
delete mode 100644 logback-examples/src/main/java/chapter4/conf/logbback-sizeAndTime.xml
delete mode 100644 logback-examples/src/main/java/chapter4/countingConsole.xml
delete mode 100644 logback-examples/src/main/java/chapter4/mail/CounterBasedEvaluator.java
delete mode 100644 logback-examples/src/main/java/chapter4/mail/EMail.java
delete mode 100644 logback-examples/src/main/java/chapter4/mail/Marked_EMail.java
delete mode 100644 logback-examples/src/main/java/chapter4/sift/SiftExample.java
delete mode 100644 logback-examples/src/main/java/chapter4/socket/SocketClient1.java
delete mode 100644 logback-examples/src/main/java/chapter4/socket/SocketClient2.java
delete mode 100644 logback-examples/src/main/java/chapter4/sub/sample/Bar.java
delete mode 100644 logback-examples/src/main/java/chapter5/CallerEvaluatorExample.java
delete mode 100644 logback-examples/src/main/java/chapter5/ExceptionEvaluatorExample.java
delete mode 100644 logback-examples/src/main/java/chapter5/MySampleConverter.java
delete mode 100644 logback-examples/src/main/java/chapter5/MySampleLayout.java
delete mode 100644 logback-examples/src/main/java/chapter5/MySampleLayout2.java
delete mode 100644 logback-examples/src/main/java/chapter5/PatternSample.java
delete mode 100644 logback-examples/src/main/java/chapter5/SampleLogging.java
delete mode 100644 logback-examples/src/main/java/chapter5/TestException.java
delete mode 100644 logback-examples/src/main/java/chapter6/FilterEvents.java
delete mode 100644 logback-examples/src/main/java/chapter6/GoMDC.java
delete mode 100644 logback-examples/src/main/java/chapter6/SampleFilter.java
delete mode 100644 logback-examples/src/main/java/chapter6/SampleTurboFilter.java
delete mode 100644 logback-examples/src/main/java/chapter7/NumberCruncher.java
delete mode 100644 logback-examples/src/main/java/chapter7/NumberCruncherClient.java
delete mode 100644 logback-examples/src/main/java/chapter7/NumberCruncherServer.java
delete mode 100644 logback-examples/src/main/java/chapter7/SimpleMDC.java
delete mode 100644 logback-examples/src/main/java/chapter7/UserServletFilter.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/ConfigurationTester.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/CountingConsoleAppender.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/ExitWoes1.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/ExitWoes2.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/IO.java
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/conf/access/logback-DB.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/conf/access/logback-SMTP.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-Console.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-HtmlToConsole.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-JMSQueue.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-JMSTopic.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-MDC.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-PrudentTimeBasedRolling.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-RollingFixedWindow.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-RollingSizeBased.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-RollingTimeBased.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-SMTP.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-SMTPWithHtml.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-fileAppender.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-syslog.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logback-timestamp.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/conf/logbback-sizeAndTime.xml
create mode 100644 logback-examples/src/main/java/chapters/appenders/countingConsole.xml
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/db/append-and-share-with-jndi.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/db/append-toMySQL-with-datasource-and-pooling.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/db/append-toMySQL-with-datasource.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/db/append-toMySQL-with-driverManager.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/db/append-with-c3p0.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/db/append-with-datasource.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/db/append-with-drivermanager.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/db/append-with-pooled-datasource.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/mail/CounterBasedEvaluator.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/mail/EMail.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/mail/Marked_EMail.java
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/mail/gmailSSL.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/mail/gmailSTARTTLS.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/mail/mail1.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/mail/mail2.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/mail/mail3.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/mail/mailWithMarker.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/SimpleConfigurator.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/calculator/AddAction.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/calculator/Calculator1.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/calculator/Calculator2.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/calculator/ComputationAction1.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/calculator/ComputationAction2.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/calculator/LiteralAction.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/calculator/MultiplyAction.java
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/calculator/calculator1.xml (100%)
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/calculator/calculator2.xml (100%)
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/calculator/calculator3.xml (100%)
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/calculator/readme.txt (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/helloWorld/HelloWorld.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/helloWorld/HelloWorldAction.java
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/helloWorld/hello.xml (100%)
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/helloWorld/readme.txt (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/implicit/NOPAction.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/implicit/PrintMe.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/implicit/PrintMeImplicitAction.java
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/implicit/implicit1.xml (100%)
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/implicit/readme.txt (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/onJoran/newRule/NewRuleCalculator.java
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/newRule/new-rule.xml (100%)
rename logback-examples/src/main/java/{chapter10 => chapters/appenders/onJoran}/newRule/readme.txt (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/sift/SiftExample.java
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/sift/access-siftingFile.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/sift/byUserid.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/socket/SocketClient1.java
create mode 100644 logback-examples/src/main/java/chapters/appenders/socket/SocketClient2.java
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/socket/client1.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/socket/server1.xml (100%)
rename logback-examples/src/main/java/{chapter4 => chapters/appenders}/socket/server2.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/appenders/sub/sample/Bar.java
create mode 100644 logback-examples/src/main/java/chapters/architecture/Bar.java
create mode 100644 logback-examples/src/main/java/chapters/architecture/HelloWorld2.java
create mode 100644 logback-examples/src/main/java/chapters/architecture/MyAppWithConfigFile.java
rename logback-examples/src/main/java/{chapter2 => chapters/architecture}/sample-config-1.xml (100%)
rename logback-examples/src/main/java/{chapter2 => chapters/architecture}/sample-config-2.xml (100%)
rename logback-examples/src/main/java/{chapter2 => chapters/architecture}/sample-config-3.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/configuration/AddStatusListenerApp.java
create mode 100644 logback-examples/src/main/java/chapters/configuration/Foo.java
create mode 100644 logback-examples/src/main/java/chapters/configuration/MyApp1.java
create mode 100644 logback-examples/src/main/java/chapters/configuration/MyApp2.java
create mode 100644 logback-examples/src/main/java/chapters/configuration/MyApp3.java
create mode 100644 logback-examples/src/main/java/chapters/configuration/additivityFlag.xml
rename logback-examples/src/main/java/{chapter3 => chapters/configuration}/containingConfig.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/configuration/contextName.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/duplicate.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/includedConfig.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/insertFromJNDI.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/multiple.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/onConsoleStatusListener.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/restricted.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/sample0.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/sample1.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/sample2.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/sample3.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/sample4.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/scan1.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/scan2.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/variableSubstitution1.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/variableSubstitution2.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/variableSubstitution3.xml
create mode 100644 logback-examples/src/main/java/chapters/configuration/variableSubstitution4.xml
rename logback-examples/src/main/java/{chapter3 => chapters/configuration}/variables1.properties (100%)
rename logback-examples/src/main/java/{chapter3 => chapters/configuration}/variables2.properties (100%)
create mode 100644 logback-examples/src/main/java/chapters/filters/FilterEvents.java
create mode 100644 logback-examples/src/main/java/chapters/filters/GoMDC.java
create mode 100644 logback-examples/src/main/java/chapters/filters/SampleFilter.java
create mode 100644 logback-examples/src/main/java/chapters/filters/SampleTurboFilter.java
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/accessEventEvaluator.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/accessEventEvaluator2.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/basicConfiguration.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/basicEventEvaluator.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/duplicateMessage.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/evaluatorWithMatcher.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/levelFilterConfig.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/mdcfilter.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/sampleFilterConfig.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/sampleTurboFilterConfig.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/thresholdFilterConfig.xml (100%)
rename logback-examples/src/main/java/{chapter6 => chapters/filters}/turboFilters.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/introduction/HelloWorld1.java
create mode 100644 logback-examples/src/main/java/chapters/introduction/HelloWorld2.java
create mode 100644 logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java
create mode 100644 logback-examples/src/main/java/chapters/layouts/ExceptionEvaluatorExample.java
create mode 100644 logback-examples/src/main/java/chapters/layouts/MySampleConverter.java
create mode 100644 logback-examples/src/main/java/chapters/layouts/MySampleLayout.java
create mode 100644 logback-examples/src/main/java/chapters/layouts/MySampleLayout2.java
create mode 100644 logback-examples/src/main/java/chapters/layouts/PatternSample.java
create mode 100644 logback-examples/src/main/java/chapters/layouts/SampleLogging.java
create mode 100644 logback-examples/src/main/java/chapters/layouts/TestException.java
rename logback-examples/src/main/java/{chapter5 => chapters/layouts}/callerEvaluatorConfig.xml (100%)
rename logback-examples/src/main/java/{chapter5 => chapters/layouts}/exceptionEvaluatorConfig.xml (100%)
rename logback-examples/src/main/java/{chapter5 => chapters/layouts}/mySampleConverterConfig.xml (100%)
rename logback-examples/src/main/java/{chapter5 => chapters/layouts}/sampleLayoutConfig.xml (100%)
rename logback-examples/src/main/java/{chapter5 => chapters/layouts}/sampleLayoutConfig2.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/mdc/NumberCruncher.java
create mode 100644 logback-examples/src/main/java/chapters/mdc/NumberCruncherClient.java
create mode 100644 logback-examples/src/main/java/chapters/mdc/NumberCruncherServer.java
create mode 100644 logback-examples/src/main/java/chapters/mdc/SimpleMDC.java
create mode 100644 logback-examples/src/main/java/chapters/mdc/UserServletFilter.java
rename logback-examples/src/main/java/{chapter7 => chapters/mdc}/mdc1.xml (100%)
rename logback-examples/src/main/java/{chapter7 => chapters/mdc}/simpleMDC.xml (100%)
create mode 100644 logback-examples/src/main/java/chapters/migrationFromLog4j/Log4jMain.java
create mode 100644 logback-examples/src/main/java/chapters/migrationFromLog4j/LogbackMain.java
create mode 100644 logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jAppender.java
create mode 100644 logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLog4jLayout.java
create mode 100644 logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackAppender.java
create mode 100644 logback-examples/src/main/java/chapters/migrationFromLog4j/TrivialLogbackLayout.java
rename logback-examples/src/main/java/{chapter11 => chapters/migrationFromLog4j}/log4jTrivial.properties (100%)
rename logback-examples/src/main/java/{chapter11 => chapters/migrationFromLog4j}/logback-trivial.xml (100%)
create mode 100644 logback-site/src/site/pages/reasonsToSwitch.html
create mode 100644 logback-site/src/site/resources/manual/images/chapters/appenders/appender.uml
create mode 100644 logback-site/src/site/resources/manual/images/chapters/appenders/appender.~ml
create mode 100644 logback-site/src/site/resources/manual/images/chapters/appenders/appenderClassDiagram.jpg
rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/dbAppenderLE.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/dbAppenderLEException.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/dbAppenderLEProperty.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/fileAppenderUML.png (100%)
rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/smtpAppender1.jpg (100%)
rename logback-site/src/site/resources/manual/images/{chapter4 => chapters/appenders}/smtpAppender2.jpg (100%)
rename logback-site/src/site/resources/manual/images/{chapter2 => chapters/architecture}/underTheHoodSequence2.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter2 => chapters/architecture}/underTheHoodSequence2_small.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter3 => chapters/configuration}/appenderSyntax.png (100%)
rename logback-site/src/site/resources/manual/images/{chapter3 => chapters/configuration}/basicSyntax.png (100%)
rename logback-site/src/site/resources/manual/images/{chapter3 => chapters/configuration}/lbClassicStatus.jpg (100%)
rename logback-site/src/site/resources/manual/images/{chapter3 => chapters/configuration}/sample.xml (100%)
rename logback-site/src/site/resources/manual/images/{chapter6 => chapters/filters}/filterChain.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/jconsole15_jetty.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/jconsole15_tomcat.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/jmxConfigurator.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/multiple.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/mx4j_jetty.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/mx4j_tomcat.gif (100%)
rename logback-site/src/site/resources/manual/images/{chapter9 => chapters/jmxConfigurator}/statusList.gif (100%)
hooks/post-receive
--
Logback: the generic, reliable, fast and flexible logging framework.
1
0

[GIT] Logback: the generic, reliable, fast and flexible logging framework. branch, encoder, updated. v0.9.18-51-g90e50c2
by git-noreply@pixie.qos.ch 01 Mar '10
by git-noreply@pixie.qos.ch 01 Mar '10
01 Mar '10
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Logback: the generic, reliable, fast and flexible logging framework.".
The branch, encoder has been updated
via 90e50c2f25dcacd6455af8baac5d8cfe6cf10f94 (commit)
from 8381bae9d2899def5d9a9420edd2d53811ddba5b (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://git.qos.ch/gitweb/?p=logback.git;a=commit;h=90e50c2f25dcacd6455af8ba…
http://github.com/ceki/logback/commit/90e50c2f25dcacd6455af8baac5d8cfe6cf10…
commit 90e50c2f25dcacd6455af8baac5d8cfe6cf10f94
Author: Ceki Gulcu <ceki(a)qos.ch>
Date: Mon Mar 1 19:13:40 2010 +0100
- working on smoother transition from layout to encoder in FileAppender
- added JNDIBasedContextDiscriminator which should work much better than
ContextBasedtiscriminator.
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
index 03e6205..f0e6042 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
@@ -18,10 +18,11 @@ import ch.qos.logback.core.sift.Discriminator;
import ch.qos.logback.core.spi.ContextAwareBase;
/**
- * This discriminator essentially returns the value mapped to an MDC key. If the
- * said value is null, then a default value is returned.
+ * This discriminator returns the value context to which this event is attached
+ * to. If the said value is null, then a default value is returned.
*
- * <p>Both Key and the DefaultValue are user specified properties.
+ * <p>
+ * Both Key and the DefaultValue are user specified properties.
*
* @author Ceki Gülcü
*
@@ -66,7 +67,8 @@ public class ContextBasedDiscriminator extends ContextAwareBase implements
}
public void setKey(String key) {
- throw new UnsupportedOperationException("Key cannot be set. Using fixed key "+KEY);
+ throw new UnsupportedOperationException(
+ "Key cannot be set. Using fixed key " + KEY);
}
/**
diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java b/logback-classic/src/main/java/ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.java
similarity index 69%
copy from logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
copy to logback-classic/src/main/java/ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.java
index 03e6205..499c2f6 100644
--- a/logback-classic/src/main/java/ch/qos/logback/classic/sift/ContextBasedDiscriminator.java
+++ b/logback-classic/src/main/java/ch/qos/logback/classic/sift/JNDIBasedContextDiscriminator.java
@@ -13,40 +13,51 @@
*/
package ch.qos.logback.classic.sift;
+import org.slf4j.impl.StaticLoggerBinder;
+
+import ch.qos.logback.classic.LoggerContext;
+import ch.qos.logback.classic.selector.ContextSelector;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.sift.Discriminator;
import ch.qos.logback.core.spi.ContextAwareBase;
/**
- * This discriminator essentially returns the value mapped to an MDC key. If the
+ * This discriminator returns the value context as determined by JNDI. If the
* said value is null, then a default value is returned.
*
- * <p>Both Key and the DefaultValue are user specified properties.
+ * <p>
+ * Both Key and the DefaultValue are user specified properties.
*
* @author Ceki Gülcü
*
*/
-public class ContextBasedDiscriminator extends ContextAwareBase implements
+public class JNDIBasedContextDiscriminator extends ContextAwareBase implements
Discriminator<ILoggingEvent> {
private static final String KEY = "contextName";
private String defaultValue;
private boolean started = false;
- public ContextBasedDiscriminator() {
+ public JNDIBasedContextDiscriminator() {
}
/**
* Return the name of the current context name as found in the logging event.
*/
public String getDiscriminatingValue(ILoggingEvent event) {
- String contextName = event.getLoggerContextVO().getName();
+ ContextSelector selector = StaticLoggerBinder.getSingleton()
+ .getContextSelector();
- if (contextName == null) {
+ if (selector == null) {
return defaultValue;
- } else {
- return contextName;
}
+
+ LoggerContext lc = selector.getLoggerContext();
+ if (lc == null) {
+ return defaultValue;
+ }
+
+ return lc.getName();
}
public boolean isStarted() {
@@ -66,7 +77,8 @@ public class ContextBasedDiscriminator extends ContextAwareBase implements
}
public void setKey(String key) {
- throw new UnsupportedOperationException("Key cannot be set. Using fixed key "+KEY);
+ throw new UnsupportedOperationException(
+ "Key cannot be set. Using fixed key " + KEY);
}
/**
diff --git a/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java b/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
index 1a38cac..c0c7b1f 100644
--- a/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
+++ b/logback-core/src/main/java/ch/qos/logback/core/OutputStreamAppender.java
@@ -85,6 +85,10 @@ public class OutputStreamAppender<E> extends UnsynchronizedAppenderBase<E> {
}
}
+ public void setLayout(Layout layout) {
+ addError("This appender no longer admits a layout as a sub-component, set an encoder instead.");
+ }
+
@Override
protected void append(E eventObject) {
if (!isStarted()) {
diff --git a/logback-core/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml b/logback-core/src/test/input/joran/compatibility/layoutInsteadOfEncoder.xml
new file mode 100644
index 0000000..e69de29
-----------------------------------------------------------------------
Summary of changes:
.../classic/sift/ContextBasedDiscriminator.java | 10 ++++--
...tor.java => JNDIBasedContextDiscriminator.java} | 30 ++++++++++++++------
.../ch/qos/logback/core/OutputStreamAppender.java | 4 ++
.../compatibility/layoutInsteadOfEncoder.xml} | 0
4 files changed, 31 insertions(+), 13 deletions(-)
copy logback-classic/src/main/java/ch/qos/logback/classic/sift/{ContextBasedDiscriminator.java => JNDIBasedContextDiscriminator.java} (69%)
copy logback-core/src/test/{witness/rolling/tbr-test1.0 => input/joran/compatibility/layoutInsteadOfEncoder.xml} (100%)
hooks/post-receive
--
Logback: the generic, reliable, fast and flexible logging framework.
1
0
This all feels like it's the wrong way round to me. SLF4J is an api - an interface. It should have no knowledge at all of the specific implementation. It doesn't know whether it's juli or log4j or logback or some other logging system I write tomorrow underneath, so how can it enumerate its Loggers?
SLF4J doesn't configure loggers - it just passes a String (or a class) to a method in the implementation that returns an object that happens to implement Logger. It's purely down to the implementation what it chooses to return from that call and how it configures it. You could write an implementation that always returns the same "Logger" that always swallows all log statements if you wanted - SLF4J doesn't (and shouldn't) know or care.
Perhaps you are talking about an extension to the jul-to-slf4j bridge? That would not entail any change to the real slf4j api.
----- Original Message -----
From: "Joachim Durchholz" <Joachim.Durchholz(a)hennig-fahrzeugteile.de>
To: "logback developers list" <logback-dev(a)qos.ch>
Sent: Monday, 1 March, 2010 3:53:47 PM
Subject: Re: [logback-dev] Better introspection into logging setup
I'd like to pursue this issue further.
Actually the title is a bit of a misnomer. What I really want to achieve
is that the j.u.l. machinery takes its configuration from the standard
SLF4J-configured loggers.
I'd like to discuss whether that's a useful thing within the scope of
the SLF4J project.
Reason against:
A) There is a simple workaround:
Configure any j.u.l.-using library with the standard j.u.l. facilities.
Make SLF4J use Level.ALL on the namespace(s) that the library lives in.
(Note that any workaround needs to make sure that (a) any log messages
generated actually hit their relevant appenders, and that (b) no
unneeded log messages are generated. I think the above workaround
satisfies that - is that correct?)
B) This is a somewhat intrusive change. SLF4J needs a new
ILoggerFactory#getAllLoggers() returning a Collection<Logger>, and it
needs to send an event for any configuration change as it becomes aware
of them (such as new loggers encountered during logback.xml evaluation,
or hardcoded creation or modification of loggers from inside the
program).
getAllLoggers() would be relatively easy, adding the required event
machinery could affect many places in SLF4J.
Maybe it would be easier to follow the configuration from logback.xml
instead of following run-time changes (but see below).
Reasons for:
1) All bridge jars (jcl-over-slf4j etc.) obey the SLF4J logging
configuration. jul-to-slf4j.jar does not. This can confuse newbies and
makes the learning curve steeper; SLF4J's main selling point is that
it's a (mostly) drop-in replacement.
To fully reap this benefit, it would be necessary to follow runtime
changes in the SLF4J configuration changes. This would be mostly
installation of new loggers, though e.g. logback loggers could change
their configuration even though the SLF4J API does not (nor would the
SLF4J API need such functions, it just needs to pass on "the logging
configuration changed" events generated in logback, jcl-over-slf4j
etc.).
2) It's easier to manage if all the logging configuration can be kept in
a single file. The current solution needs two, logback.xml and whatever
file you use for j.u.l.
3) j.u.l. will coexist with other loggers for a long time. Work invested
here will be a benefit for years to come.
So... am I going off into the wild, or am I following a track that SLF4J
would want to be on?
Regards,
Jo
P.S. Implementation support available: I am willing to provide the code
for SLF4JBridgeHandler, but I'm not deeply enough into SLF4J in general
to do the required changes.)
P.P.S.: Personal significance: This isn't an immediate problem for me,
I'll probably get around to setting up a proper j.u.l. configuration
some day (*sigh*).
_______________________________________________
logback-dev mailing list
logback-dev(a)qos.ch
http://qos.ch/mailman/listinfo/logback-dev
2
1
Taken here from Bugzilla #169 on Ceki's request.
Reworded to improve presentation.
Within the SLF4J framework, I'd like to
- have a way to enumerate all active loggers, and find out at what
logging levels they are, and
- get an event whenever the set of active loggers or their configuration
changes.
The use case is this:
I need to integrate multiple libraries, each using a different logging
framework.
Some of them use java.util.logging, and since j.u.l. does not respond
directly to the SLF4J configuration, I currently need to keep two sets
of configurations, one for SLF4J loggers and one for j.u.l. (I could
have the bridge run with maximum logging and let the SLF4J side sort out
which messages are needed and which aren't, but that's killing
performance.)
Design considerations (i.e. that's how far I got):
So I thought I'd hack something for the j.u.l. bridge to mimick the
SLF4J loggers. E.g. iterate over all SLF4J loggers and install a
corresponding j.u.l logger, instead of installing a root logger and
logging everything.
Turns out LoggerFactory does not return a list of active loggers :(
The other thought that occurred to me what as SLF4J-managed loggers are
reconfigured at runtime, they should inform the j.u.l. brigde so it can
reconfigure the j.u.l. side as well.
Feedback welcome.
Regards,
Jo
1
1