[GIT] Logback: the generic, reliable, fast and flexible logging framework. branch master updated. v_0.9.30-42-g4fadcb4

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 4fadcb4ae7e8bac392524a37e9ab1a3a8159b6fe (commit) from 1e59f24cc91a372e4ab8d13eab3a20b20b079a23 (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=4fadcb4ae7e8bac392524a37e... http://github.com/ceki/logback/commit/4fadcb4ae7e8bac392524a37e9ab1a3a8159b6... commit 4fadcb4ae7e8bac392524a37e9ab1a3a8159b6fe Author: Ceki Gulcu <ceki@qos.ch> Date: Tue Oct 25 16:07:45 2011 +0200 fix LBACCESS-27 diff --git a/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java b/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java index d688418..2d06115 100644 --- a/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java +++ b/logback-access/src/main/java/ch/qos/logback/access/joran/JoranConfigurator.java @@ -25,7 +25,11 @@ import ch.qos.logback.core.UnsynchronizedAppenderBase; import ch.qos.logback.core.filter.EvaluatorFilter; import ch.qos.logback.core.joran.JoranConfiguratorBase; import ch.qos.logback.core.joran.action.AppenderRefAction; +import ch.qos.logback.core.joran.action.IncludeAction; import ch.qos.logback.core.joran.action.NOPAction; +import ch.qos.logback.core.joran.conditional.ElseAction; +import ch.qos.logback.core.joran.conditional.IfAction; +import ch.qos.logback.core.joran.conditional.ThenAction; import ch.qos.logback.core.joran.spi.DefaultNestedComponentRegistry; import ch.qos.logback.core.joran.spi.Pattern; import ch.qos.logback.core.joran.spi.RuleStore; @@ -33,6 +37,7 @@ import ch.qos.logback.core.joran.spi.RuleStore; /** + * This JoranConfiguratorclass adds rules specific to logback-access. * * @author Ceki Gülcü */ @@ -49,6 +54,15 @@ public class JoranConfigurator extends JoranConfiguratorBase { rs.addRule(new Pattern("configuration/appender/sift/*"), new NOPAction()); rs.addRule(new Pattern("configuration/evaluator"), new EvaluatorAction()); + + // add if-then-else support + rs.addRule(new Pattern("*/if"), new IfAction()); + rs.addRule(new Pattern("*/if/then"), new ThenAction()); + rs.addRule(new Pattern("*/if/then/*"), new NOPAction()); + rs.addRule(new Pattern("*/if/else"), new ElseAction()); + rs.addRule(new Pattern("*/if/else/*"), new NOPAction()); + + rs.addRule(new Pattern("configuration/include"), new IncludeAction()); } @Override diff --git a/logback-access/src/test/input/joran/conditional/conditionalConsole.xml b/logback-access/src/test/input/joran/conditional/conditionalConsole.xml new file mode 100644 index 0000000..1ce7b68 --- /dev/null +++ b/logback-access/src/test/input/joran/conditional/conditionalConsole.xml @@ -0,0 +1,17 @@ + +<configuration> + + <if condition='property("HOSTNAME").contains("${aHost}")'> + <then> + <appender name="CON" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%h %l %u %user %date "%r" %s %b</pattern> + </encoder> + </appender> + + <appender-ref ref="CON" /> + + </then> + </if> + +</configuration> \ No newline at end of file diff --git a/logback-access/src/test/input/joran/conditional/conditionalConsole_ELSE.xml b/logback-access/src/test/input/joran/conditional/conditionalConsole_ELSE.xml new file mode 100644 index 0000000..4d3bd85 --- /dev/null +++ b/logback-access/src/test/input/joran/conditional/conditionalConsole_ELSE.xml @@ -0,0 +1,20 @@ + +<configuration> + + <if condition='property("HOSTNAME").contains("XYZ88")'> + <then> + <appender name="CON" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%h %l %u %user %date "%r" %s %b</pattern> + </encoder> + </appender> + + <appender-ref ref="CON" /> + </then> + <else> + <appender name="LIST" class="ch.qos.logback.core.read.ListAppender"/> + <appender-ref ref="LIST" /> + </else> + </if> + +</configuration> \ No newline at end of file diff --git a/logback-access/src/test/java/ch/qos/logback/access/AllAccessTest.java b/logback-access/src/test/java/ch/qos/logback/access/AllAccessTest.java index de85c65..2971d7d 100644 --- a/logback-access/src/test/java/ch/qos/logback/access/AllAccessTest.java +++ b/logback-access/src/test/java/ch/qos/logback/access/AllAccessTest.java @@ -22,6 +22,7 @@ import org.junit.runners.Suite.SuiteClasses; ch.qos.logback.access.boolex.PackageTest.class, ch.qos.logback.access.net.PackageTest.class, ch.qos.logback.access.pattern.PackageTest.class, + ch.qos.logback.access.joran.PackageTest.class, ch.qos.logback.access.jetty.PackageTest.class, ch.qos.logback.access.filter.PackageTest.class, ch.qos.logback.access.servlet.PackageTest.class, diff --git a/logback-access/src/test/java/ch/qos/logback/access/joran/ConditionalTest.java b/logback-access/src/test/java/ch/qos/logback/access/joran/ConditionalTest.java new file mode 100644 index 0000000..16a2bea --- /dev/null +++ b/logback-access/src/test/java/ch/qos/logback/access/joran/ConditionalTest.java @@ -0,0 +1,84 @@ +package ch.qos.logback.access.joran; + +import ch.qos.logback.access.TeztConstants; +import ch.qos.logback.access.spi.AccessContext; +import ch.qos.logback.core.ConsoleAppender; +import ch.qos.logback.core.FileAppender; +import ch.qos.logback.core.joran.spi.JoranException; +import ch.qos.logback.core.read.ListAppender; +import ch.qos.logback.core.status.StatusChecker; +import ch.qos.logback.core.testUtil.RandomUtil; +import ch.qos.logback.core.util.CoreTestConstants; +import ch.qos.logback.core.util.StatusPrinter; +import org.junit.Before; +import org.junit.Test; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.UnknownHostException; + +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +/** + * @author Ceki Gücü + */ +public class ConditionalTest { + + AccessContext context = new AccessContext(); + StatusChecker checker = new StatusChecker(context); + + int diff = RandomUtil.getPositiveInt(); + String randomOutputDir = CoreTestConstants.OUTPUT_DIR_PREFIX + diff + "/"; + + @Before + public void setUp() { + InetAddress localhost = null; + try { + localhost = InetAddress.getLocalHost(); + context.putProperty("aHost", localhost.getHostName()); + } catch (UnknownHostException e) { + e.printStackTrace(); + } + } + + void configure(String file) throws JoranException { + JoranConfigurator jc = new JoranConfigurator(); + jc.setContext(context); + jc.doConfigure(file); + } + + @Test + public void conditionalConsoleApp_IF_THEN_True() throws JoranException, UnknownHostException { + configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/conditional/conditionalConsole.xml"); + ConsoleAppender consoleAppender = (ConsoleAppender) context.getAppender("CON"); + assertNotNull(consoleAppender); + assertTrue(checker.isErrorFree(0)); + } + + @Test + public void conditionalConsoleApp_IF_THEN_False() throws JoranException, + IOException, InterruptedException { + context.putProperty("aHost", null); + configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/conditional/conditionalConsole.xml"); + + ConsoleAppender consoleAppender = (ConsoleAppender) context.getAppender("CON"); + assertNull(consoleAppender); + + StatusChecker checker = new StatusChecker(context); + assertTrue(checker.isErrorFree(0)); + } + + @Test + public void conditionalConsoleApp_ELSE() throws JoranException, + IOException, InterruptedException { + configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/conditional/conditionalConsole_ELSE.xml"); + ConsoleAppender consoleAppender = (ConsoleAppender) context.getAppender("CON"); + assertNull(consoleAppender); + + ListAppender listAppender = (ListAppender) context.getAppender("LIST"); + assertNotNull(listAppender); + assertTrue(checker.isErrorFree(0)); + } +} diff --git a/logback-access/src/test/java/ch/qos/logback/access/joran/PackageTest.java b/logback-access/src/test/java/ch/qos/logback/access/joran/PackageTest.java new file mode 100644 index 0000000..b79b7ca --- /dev/null +++ b/logback-access/src/test/java/ch/qos/logback/access/joran/PackageTest.java @@ -0,0 +1,12 @@ +package ch.qos.logback.access.joran; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + +/** + * @author Ceki Gücü + */ +@RunWith(Suite.class) +@Suite.SuiteClasses({JoranConfiguratorTest.class, ConditionalTest.class}) +public class PackageTest { +} diff --git a/logback-classic/pom.xml b/logback-classic/pom.xml index da0175a..5dc62fb 100644 --- a/logback-classic/pom.xml +++ b/logback-classic/pom.xml @@ -339,7 +339,7 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <configuration> - <!-- once, never, --> + <!-- once, never, pertest, always --> <forkMode>once</forkMode> <reportFormat>plain</reportFormat> <trimStackTrace>false</trimStackTrace> diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java b/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java index 4334d32..46c8f73 100644 --- a/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java +++ b/logback-classic/src/main/java/ch/qos/logback/classic/joran/JoranConfigurator.java @@ -30,7 +30,7 @@ import ch.qos.logback.core.joran.spi.RuleStore; /** * This JoranConfiguratorclass adds rules specific to logback-classic. - * + * * @author Ceki Gülcü */ public class JoranConfigurator extends JoranConfiguratorBase { 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 4884ea6..1e345a2 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 @@ -373,9 +373,11 @@ public class JoranConfiguratorTest { public void levelChangePropagator1() throws JoranException, IOException, InterruptedException { java.util.logging.Logger.getLogger("xx").setLevel(java.util.logging.Level.INFO); + verifyJULLevel("xx", Level.INFO); String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX + "/jul/levelChangePropagator1.xml"; configure(configFileAsStr); + StatusPrinter.print(loggerContext); StatusChecker checker = new StatusChecker(loggerContext); assertTrue(checker.isErrorFree(0)); verifyJULLevel("xx", Level.INFO); diff --git a/logback-site/src/site/pages/news.html b/logback-site/src/site/pages/news.html index 4561ba9..fa96c57 100644 --- a/logback-site/src/site/pages/news.html +++ b/logback-site/src/site/pages/news.html @@ -66,6 +66,17 @@ href="http://jira.qos.ch/browse/LBCORE-225">LBCORE-225</a> reported by Mark Woon.</p> + <p>Logback-access now supports conditional configuration. This + fixes <a + href="http://jira.qos.ch/browse/LBACCESS-27">LBACCESS-27</a> + reported by Marshall Pierce.</p> + + <p>Logback-access now supports inclusion of configuration + files. See the <a + href="manual/configuration.html#fileInclusion">chapter about + configuration</a> in the logback's online manual for more + information. </p> + <p>Added <code>ch.qos.logback.core.read</code> to "Import-Package" declaration in logback-classic's manifest file. This fixes <a href="http://jira.qos.ch/browse/LBCLASSIC-131">LBCLASSIC-131</a> @@ -1500,7 +1511,7 @@ ALTER TABLE logging_event ADD arg3 VARCHAR(254);</pre> logback's configuration framework. A file can contain an <em>include</em> element that has a <em>file</em> or <em>url</em> attribute pointing to a configuration file. See the <a - href="manual/configuration.html#Include">chapter about + href="manual/configuration.html#fileInclusion">chapter about configuration</a> in the logback's online manual for more information. </p> ----------------------------------------------------------------------- Summary of changes: .../logback/access/joran/JoranConfigurator.java | 14 +++ .../input/joran/conditional/conditionalConsole.xml | 17 ++++ .../joran/conditional/conditionalConsole_ELSE.xml | 20 +++++ .../java/ch/qos/logback/access/AllAccessTest.java | 1 + .../qos/logback/access/joran/ConditionalTest.java | 84 ++++++++++++++++++++ .../ch/qos/logback/access/joran/PackageTest.java | 12 +++ logback-classic/pom.xml | 2 +- .../logback/classic/joran/JoranConfigurator.java | 2 +- .../classic/joran/JoranConfiguratorTest.java | 2 + logback-site/src/site/pages/news.html | 13 +++- 10 files changed, 164 insertions(+), 3 deletions(-) create mode 100644 logback-access/src/test/input/joran/conditional/conditionalConsole.xml create mode 100644 logback-access/src/test/input/joran/conditional/conditionalConsole_ELSE.xml create mode 100644 logback-access/src/test/java/ch/qos/logback/access/joran/ConditionalTest.java create mode 100644 logback-access/src/test/java/ch/qos/logback/access/joran/PackageTest.java hooks/post-receive -- Logback: the generic, reliable, fast and flexible logging framework.
participants (1)
-
git-noreply@pixie.qos.ch