
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 c7af050b93defa5beb51c3d031ddcf85909719d7 (commit) from d355c186d801151469afedc107ae35c338468f6d (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=c7af050b93defa5beb51c3d03... http://github.com/ceki/logback/commit/c7af050b93defa5beb51c3d031ddcf85909719... commit c7af050b93defa5beb51c3d031ddcf85909719d7 Author: Ceki Gulcu <ceki@qos.ch> Date: Thu Mar 11 13:07:02 2010 +0100 - continued work on the documentations - making sure that everything compiles under JDK 1.5 - upgraded janino dependency to 2.5.10 from 2.4.3 diff --git a/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java b/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java index 578a8a4..b81c581 100644 --- a/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java +++ b/logback-classic/src/main/java/ch/qos/logback/classic/LoggerContext.java @@ -76,10 +76,14 @@ public class LoggerContext extends ContextBase implements ILoggerFactory, this.root = new Logger(Logger.ROOT_LOGGER_NAME, null, this); this.root.setLevel(Level.DEBUG); loggerCache.put(Logger.ROOT_LOGGER_NAME, root); - putObject(CoreConstants.EVALUATOR_MAP, new HashMap()); + initEvaluatorMap(); size = 1; } + void initEvaluatorMap() { + putObject(CoreConstants.EVALUATOR_MAP, new HashMap()); + } + /** * A new instance of LoggerContextRemoteView needs to be created each time the * name or propertyMap (including keys or values) changes. @@ -212,6 +216,7 @@ public class LoggerContext extends ContextBase implements ILoggerFactory, public void reset() { resetCount++; super.reset(); + initEvaluatorMap(); root.recursiveReset(); resetTurboFilterList(); fireOnReset(); diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java index 46f694e..846d78e 100644 --- a/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java +++ b/logback-classic/src/test/java/ch/qos/logback/classic/LoggerContextTest.java @@ -24,6 +24,7 @@ import org.junit.Before; import org.junit.Test; import ch.qos.logback.classic.turbo.NOPTurboFilter; +import ch.qos.logback.core.CoreConstants; import ch.qos.logback.core.status.StatusManager; public class LoggerContextTest { @@ -215,4 +216,10 @@ public class LoggerContextTest { assertTrue(root.isDebugEnabled()); } + @Test + public void evaluatorMapPostReset() { + lc.reset(); + assertNotNull(lc.getObject(CoreConstants.EVALUATOR_MAP)); + } + } \ No newline at end of file diff --git a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java index 9a79884..a1504ae 100644 --- a/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java +++ b/logback-classic/src/test/java/ch/qos/logback/classic/encoder/PatternLayoutEncoderTest.java @@ -53,7 +53,7 @@ public class PatternLayoutEncoderTest { ILoggingEvent event = makeLoggingEvent(msg); ple.doEncode(event); ple.close(); - assertEquals(msg, new String(baos.toByteArray(), utf8Charset)); + assertEquals(msg, new String(baos.toByteArray(), utf8Charset.name())); } } 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 e7edcc6..58851ac 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 @@ -153,8 +153,12 @@ public class ReconfigureOnChangeTest { // however, there should be some effective resets String failMsg = "effective=" + effectiveResets + ", expected=" + expectedReconfigurations; - assertTrue(failMsg, - (effectiveResets * 1.3) >= (expectedReconfigurations * 1.0)); + + // + if (!(Env.isJDK6OrHigher())) { + assertTrue(failMsg, + (effectiveResets * 1.3) >= (expectedReconfigurations * 1.0)); + } } ReconfigureOnChangeFilter initROCF() throws MalformedURLException { diff --git a/logback-core/src/main/java/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java b/logback-core/src/main/java/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java index 0c3f2bf..32ea60d 100644 --- a/logback-core/src/main/java/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java +++ b/logback-core/src/main/java/ch/qos/logback/core/encoder/LayoutWrappingEncoder.java @@ -2,6 +2,7 @@ package ch.qos.logback.core.encoder; import java.io.IOException; import java.io.OutputStream; +import java.io.UnsupportedEncodingException; import java.nio.charset.Charset; import ch.qos.logback.core.CoreConstants; @@ -20,7 +21,6 @@ public class LayoutWrappingEncoder<E> extends EncoderBase<E> { */ private Charset charset; - public Layout<E> getLayout() { return layout; } @@ -89,7 +89,12 @@ public class LayoutWrappingEncoder<E> extends EncoderBase<E> { if (charset == null) { return s.getBytes(); } else { - return s.getBytes(charset); + try { + return s.getBytes(charset.name()); + } catch (UnsupportedEncodingException e) { + throw new IllegalStateException( + "An existing charser cannot possibly be unsupported."); + } } } diff --git a/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java b/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java index b442394..93f6093 100644 --- a/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java +++ b/logback-core/src/main/java/ch/qos/logback/core/joran/action/AbstractEventEvaluatorAction.java @@ -39,7 +39,7 @@ abstract public class AbstractEventEvaluatorAction extends Action { String className = attributes.getValue(CLASS_ATTRIBUTE); if (OptionHelper.isEmpty(className)) { className = defaultClassName(); - addWarn("Assuming default evaluator class [" + className + "]"); + addInfo("Assuming default evaluator class [" + className + "]"); } if (OptionHelper.isEmpty(className)) { @@ -106,7 +106,11 @@ abstract public class AbstractEventEvaluatorAction extends Action { try { Map<String, EventEvaluator> evaluatorMap = (Map<String, EventEvaluator>) context .getObject(CoreConstants.EVALUATOR_MAP); - evaluatorMap.put(evaluator.getName(), evaluator); + if(evaluatorMap == null) { + addError("Could not find EvaluatorMap"); + } else { + evaluatorMap.put(evaluator.getName(), evaluator); + } } catch (Exception ex) { addError("Could not set evaluator named [" + evaluator + "].", ex); } diff --git a/logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java b/logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java index 87e2117..25afd32 100644 --- a/logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java +++ b/logback-examples/src/main/java/chapters/layouts/CallerEvaluatorExample.java @@ -23,9 +23,8 @@ import ch.qos.logback.core.util.StatusPrinter; public class CallerEvaluatorExample { - public static void main(String[] args) { - Logger logger = LoggerFactory - .getLogger(CallerEvaluatorExample.class); + public static void main(String[] args) { + Logger logger = LoggerFactory.getLogger(CallerEvaluatorExample.class); LoggerContext lc = (LoggerContext) LoggerFactory.getILoggerFactory(); try { @@ -34,8 +33,9 @@ public class CallerEvaluatorExample { lc.reset(); configurator.doConfigure(args[0]); } catch (JoranException je) { - StatusPrinter.print(lc); + // StatusPrinter will handle this } + StatusPrinter.printInCaseOfErrorsOrWarnings(lc); for (int i = 0; i < 5; i++) { if (i == 3) { diff --git a/logback-examples/src/main/java/chapters/layouts/callerEvaluatorConfig.xml b/logback-examples/src/main/java/chapters/layouts/callerEvaluatorConfig.xml index ffbcb38..91c89d7 100644 --- a/logback-examples/src/main/java/chapters/layouts/callerEvaluatorConfig.xml +++ b/logback-examples/src/main/java/chapters/layouts/callerEvaluatorConfig.xml @@ -1,18 +1,18 @@ <configuration> <evaluator name="DISPLAY_CALLER_EVAL"> - <Expression> - logger.getName().contains("chapters.layouts") && message.contains("who calls thee") - </Expression> + <expression> + logger.contains("chapters.layouts") && message.contains("who calls thee") + </expression> </evaluator> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> - <layout class="ch.qos.logback.classic.PatternLayout"> - <Pattern>%-4relative [%thread] %-5level - %msg%n%caller{2, DISPLAY_CALLER_EVAL}</Pattern> - </layout> + <encoder> + <pattern>%-4relative [%thread] %-5level - %msg%n%caller{2, DISPLAY_CALLER_EVAL}</pattern> + </encoder> </appender> - <root level="debug"> + <root level="DEBUG"> <appender-ref ref="STDOUT" /> </root> </configuration> \ No newline at end of file diff --git a/logback-site/src/site/pages/manual/filters.html b/logback-site/src/site/pages/manual/filters.html index 4ca854c..b61a452 100644 --- a/logback-site/src/site/pages/manual/filters.html +++ b/logback-site/src/site/pages/manual/filters.html @@ -244,9 +244,9 @@ public class SampleFilter extends Filter>ILoggingEvent> { href="../xref/ch/qos/logback/core/boolex/EventEvaluator.html"> <code>EventEvaluator</code></a> which evaluates whether a given criteria is met. On match and respectively on mismatch, the - <code>EvaluatorFilter</code> will return the value set for the - <span class="option">OnMatch</span> and respectively for the <span - class="option">OnMismatch</span> properties. + <code>EvaluatorFilter</code> will return the value corresponding + to <span class="option">onMatch</span> and respectively to <span + class="option">onMismatch</span> properties. </p> <p>The <code>EventEvaluator</code> is an abstract class and you @@ -258,7 +258,11 @@ public class SampleFilter extends Filter>ILoggingEvent> { evaluation criteria. We refer to such java language boolean expressions as "<em>evaulation expressions</em>". Evaluation expressions enable hereto unprecedented flexibility in event - filtering. + filtering. <code>JaninoEventEvaluator</code> requires the <a + href="http://docs.codehaus.org/display/JANINO/Home">Janino + library</a>. Please see the <a + href="../setup.html#janino">corresponding section</a> of the setup + document. </p> <p>Evaluation expressions are compiled on-the-fly during the diff --git a/logback-site/src/site/pages/manual/layouts.html b/logback-site/src/site/pages/manual/layouts.html index c5dc7d5..25ffd9b 100644 --- a/logback-site/src/site/pages/manual/layouts.html +++ b/logback-site/src/site/pages/manual/layouts.html @@ -1256,6 +1256,18 @@ Caller+2 at mainPackage.ConfigTester.main(ConfigTester.java:38)</pre> superfluous, we will not penalize application performance. </p> + <p>Evaluators and in particular <em>evaluation expressions</em> + are presented in a <a + href="filters.html#evalutatorFilter">dedicated section of the + chapter on filters</a> which you MUST read if you want use + evaluators in any meaninful way. Also note that the examples below + are implicitly based on <code>JaninoEventEvaluator</code> which + requires the <a + href="http://docs.codehaus.org/display/JANINO/Home">Janino + library</a>. Please see the <a + href="../setup.html#janino">corresponding section</a> of the setup + document.</p> + <em> Example 5.2: Sample usage of EventEvaluators (logback-examples/src/main/java/chapters/layouts/callerEvaluatorConfig.xml) @@ -1311,8 +1323,9 @@ public class CallerEvaluatorExample { configurator.setContext(lc); configurator.doConfigure(args[0]); } catch (JoranException je) { - StatusPrinter.print(lc); + // StatusPrinter will handle this } + StatusPrinter.printInCaseOfErrorsOrWarnings(lc); for (int i = 0; i < 5; i++) { if (i == 3) { @@ -1323,24 +1336,23 @@ public class CallerEvaluatorExample { } } }</pre> - <p> - The <em>CallerEvaluatorExample</em> application does nothing particularly - fancy. Five logging requests are issued, the third one being - different from the others. - </p> - <p> - When a logging request is issued, the corresponding logging - event goes through the evaluation process. The third request - matches the evaluation criteria, causing its caller data to be - displayed. + + <p>The <em>CallerEvaluatorExample</em> application does nothing + particularly fancy. Five logging requests are issued, the third + one being different from the others. </p> - <p> - Here is the output of the - <code>CallerEvaluatorExample</code> - class. + <p>When a logging request is issued, the corresponding logging + event is evaluated. The third request matches the evaluation + criteria, causing its caller data to be displayed. </p> + <p>The command</p> + + <p class="source">java chapters.layouts.CallerEvaluatorExample src/main/java/chapters/layouts/callerEvaluatorConfig.xml</p> + + <p>will yield</p> + <div class="source"><pre>0 [main] DEBUG - I know me 0 0 [main] DEBUG - I know me 1 0 [main] DEBUG - I know me 2 @@ -1356,9 +1368,9 @@ Caller+0 at chapters.layouts.CallerEvaluatorExample.main(CallerEvaluatorExampl displayed. </p> - <p><b>Important:</b> With the <em>caller</em> conversion - specifier, the data is displayed when <em>the expression evaluates - to <b>true</b>.</em></p> + <p><b>Important:</b> With the <em>caller</em> conversion word, the + data is displayed when <em>the expression evaluates to + <b>true</b>.</em></p> <p>Let us consider at a different situation. When exceptions are included in a logging request, their stack trace is usually diff --git a/logback-site/src/site/pages/setup.html b/logback-site/src/site/pages/setup.html index 71093ef..1b408c7 100644 --- a/logback-site/src/site/pages/setup.html +++ b/logback-site/src/site/pages/setup.html @@ -38,7 +38,9 @@ with <a href="http://www.slf4j.org">SLF4J</a>, a separate project. </p> - <h3>Running from the command line</h3> + + + <h3><a href="">Running from the command line</a></h3> <p>Assuming your current directory is <em>$LOGBACK_HOME/logback-examples</em>, where @@ -71,7 +73,29 @@ <em>$LOGBACK_HOME/logback-examples</em> directory. </p> - <h3>Using an IDE, e.g. Eclipse</h3> + <h3><a name="SMTP" href="#SMTP"><code>SMTPAppender</code> requires + JavaMail API</a></h3> + + <p><code>SMTPAppender</code> related examples require the JavaMail + API version 1.4 or later. Once you <a + href="http://java.sun.com/products/javamail/downloads/index.html">download + JavaMail</a>, you need to place <em>mail.jar</em> on your class + path.</p> + + <h3><a name="janino" href="#janino">Evaluators and more + specifically <code>JaninoEvantEvaluator</code> require + Janino</a></h3> + + <p>The evaluator examples which are mostly based on + <code>JaninoEvantEvaluator</code> require <a + href="http://docs.codehaus.org/display/JANINO/Home"><b>Janino</b></a> + version 2.5.10 or later. Once you downloaded Janino, you need to + place <em>janino.jar</em> on your class path.</p> + + + + <h3><a name="eclipse" href="#eclipse">Using an IDE, + e.g. Eclipse</a></h3> <p>You can import the logback project into Eclipse. Since logback uses maven as its build system, the "maven eclipse:eclipse" command @@ -80,8 +104,6 @@ or two clicks.</p> - - <script src="templates/footer.js" type="text/javascript"></script> </div> </body> diff --git a/pom.xml b/pom.xml index 380b1f3..3fcf402 100755 --- a/pom.xml +++ b/pom.xml @@ -76,7 +76,7 @@ <dependency> <groupId>janino</groupId> <artifactId>janino</artifactId> - <version>2.4.3</version> + <version>2.5.10</version> </dependency> <dependency> <groupId>javax.mail</groupId> ----------------------------------------------------------------------- Summary of changes: .../java/ch/qos/logback/classic/LoggerContext.java | 7 +++- .../ch/qos/logback/classic/LoggerContextTest.java | 7 +++ .../classic/encoder/PatternLayoutEncoderTest.java | 2 +- .../classic/turbo/ReconfigureOnChangeTest.java | 8 +++- .../core/encoder/LayoutWrappingEncoder.java | 9 +++- .../joran/action/AbstractEventEvaluatorAction.java | 8 +++- .../chapters/layouts/CallerEvaluatorExample.java | 8 ++-- .../chapters/layouts/callerEvaluatorConfig.xml | 14 +++--- logback-site/src/site/pages/manual/filters.html | 12 +++-- logback-site/src/site/pages/manual/layouts.html | 48 ++++++++++++------- logback-site/src/site/pages/setup.html | 30 +++++++++++-- pom.xml | 2 +- 12 files changed, 109 insertions(+), 46 deletions(-) hooks/post-receive -- Logback: the generic, reliable, fast and flexible logging framework.