svn commit: r1187648 - in /logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src: main/java/org/apache/logging/log4j/core/layout/ main/java/org/apache/logging/log4j/core/pattern/ test/
Author: rgoers Date: Sat Oct 22 04:18:03 2011 New Revision: 1187648 URL: http://svn.apache.org/viewvc?rev=1187648&view=rev Log: Add RegexReplacementPatternConverter Added: logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java - copied, changed from r1185987, logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java - copied, changed from r1186305, logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java Modified: logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementTest.java logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/test/resources/log4j-replace.xml Modified: logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java URL: http://svn.apache.org/viewvc/logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java?rev=1187648&r1=1187647&r2=1187648&view=diff == --- logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java (original) +++ logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/layout/PatternLayout.java Sat Oct 22 04:18:03 2011 @@ -516,7 +516,7 @@ public class PatternLayout extends Abstr return config == null ? str : config.getSubst().replace(event, str); } -private PatternParser createPatternParser(Configuration config) { +public static PatternParser createPatternParser(Configuration config) { if (config == null) { return new PatternParser(config, KEY, LogEventPatternConverter.class); } Copied: logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java (from r1185987, logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java) URL: http://svn.apache.org/viewvc/logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java?p2=logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java&p1=logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java&r1=1185987&r2=1187648&rev=1187648&view=diff == --- logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java (original) +++ logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverter.java Sat Oct 22 04:18:03 2011 @@ -22,7 +22,6 @@ import org.apache.logging.log4j.core.Log import org.apache.logging.log4j.core.config.Configuration; import org.apache.logging.log4j.core.config.plugins.Plugin; import org.apache.logging.log4j.core.config.plugins.PluginAttr; -import org.apache.logging.log4j.core.config.plugins.PluginConfiguration; import org.apache.logging.log4j.core.config.plugins.PluginFactory; import org.apache.logging.log4j.core.layout.PatternLayout; import org.apache.logging.log4j.status.StatusLogger; @@ -31,10 +30,11 @@ import java.util.List; import java.util.regex.Pattern; /** - * + * Replacement pattern converter. */ -@Plugin(name="replace", type="Core", printObject=true) -public final class RegexReplacement { +@Plugin(name="replace", type="Converter") +@ConverterKeys({"replace"}) +public final class RegexReplacementConverter extends LogEventPatternConverter { private final Pattern pattern; @@ -42,39 +42,62 @@ public final class RegexReplacement { private static Logger logger = StatusLogger.getLogger(); +private List converters; + /** - * Private constructor. - * - * @param options options, may be null. + * Construct the converter. + * @param converters The PatternConverters to generate the text to manipulate. + * @par
svn commit: r1187483 - /logging/log4php/trunk/src/main/php/LoggerAppender.php
Author: ihabunek Date: Fri Oct 21 18:03:42 2011 New Revision: 1187483 URL: http://svn.apache.org/viewvc?rev=1187483&view=rev Log: Added a helper warn() method to appenders. Modified: logging/log4php/trunk/src/main/php/LoggerAppender.php Modified: logging/log4php/trunk/src/main/php/LoggerAppender.php URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/main/php/LoggerAppender.php?rev=1187483&r1=1187482&r2=1187483&view=diff == --- logging/log4php/trunk/src/main/php/LoggerAppender.php (original) +++ logging/log4php/trunk/src/main/php/LoggerAppender.php Fri Oct 21 18:03:42 2011 @@ -271,4 +271,9 @@ abstract class LoggerAppender { $this->closed = true; } + /** Triggers a warning for this logger with the given message. */ + protected function warn($message) { + trigger_error("log4php: appender [{$this->name}]: $message", E_USER_WARNING); + } + }
svn commit: r1187391 - /logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs
Author: bodewig Date: Fri Oct 21 15:14:05 2011 New Revision: 1187391 URL: http://svn.apache.org/viewvc?rev=1187391&view=rev Log: Proof XmlLayout properly deals with braces in stacktaces Modified: logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs Modified: logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs URL: http://svn.apache.org/viewvc/logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs?rev=1187391&r1=1187390&r2=1187391&view=diff == --- logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs (original) +++ logging/log4net/trunk/tests/src/Layout/XmlLayoutTest.cs Fri Oct 21 15:14:05 2011 @@ -281,5 +281,56 @@ namespace log4net.Tests.Layout Assert.AreEqual(expected, stringAppender.GetString()); } + +#if NET_4_0 +[Test] +public void BracketsInStackTracesKeepLogWellFormed() { +XmlLayout layout = new XmlLayout(); +StringAppender stringAppender = new StringAppender(); +stringAppender.Layout = layout; + +ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); +BasicConfigurator.Configure(rep, stringAppender); +ILog log1 = LogManager.GetLogger(rep.Name, "TestLogger"); +Action bar = foo => { +try { +throw new NullReferenceException(); +} catch (Exception ex) { +log1.Error(string.Format("Error {0}", foo), ex); +} +}; +bar(42); + +// really only asserts there is no exception +var loggedDoc = new XmlDocument(); +loggedDoc.LoadXml(stringAppender.GetString()); +} + +[Test] +public void BracketsInStackTracesAreEscapedProperly() { +XmlLayout layout = new XmlLayout(); +StringAppender stringAppender = new StringAppender(); +stringAppender.Layout = layout; + +ILoggerRepository rep = LogManager.CreateRepository(Guid.NewGuid().ToString()); +BasicConfigurator.Configure(rep, stringAppender); +ILog log1 = LogManager.GetLogger(rep.Name, "TestLogger"); +Action bar = foo => { +try { +throw new NullReferenceException(); +} +catch (Exception ex) { +log1.Error(string.Format("Error {0}", foo), ex); +} +}; +bar(42); + +var log = stringAppender.GetString(); +var startOfExceptionElement = log.IndexOf(""); +var sub = log.Substring(startOfExceptionElement + 11); +StringAssert.StartsWith("System.NullReferenceException: Object reference not set to an instance of an object", sub); +StringAssert.Contains("at log4net.Tests.Layout.XmlLayoutTest.<>c__DisplayClass4.b__3(Int32 foo) in ", sub); +} +#endif } } \ No newline at end of file
svn commit: r1187201 - /logging/log4php/trunk/src/test/php/README
Author: ihabunek Date: Fri Oct 21 08:10:24 2011 New Revision: 1187201 URL: http://svn.apache.org/viewvc?rev=1187201&view=rev Log: Updated README file for tests. Modified: logging/log4php/trunk/src/test/php/README Modified: logging/log4php/trunk/src/test/php/README URL: http://svn.apache.org/viewvc/logging/log4php/trunk/src/test/php/README?rev=1187201&r1=1187200&r2=1187201&view=diff == --- logging/log4php/trunk/src/test/php/README (original) +++ logging/log4php/trunk/src/test/php/README Fri Oct 21 08:10:24 2011 @@ -1,5 +1,17 @@ -Individual Tests can be run from the top level directory using e.g.: -$ phpunit --bootstrap=src/test/php/bootstrap.php src/test/php/appenders/LoggerAppenderSocketTest.php +All tests can be run from the src/test/php directory by running: +$ phpunit + +Tests classes are divided into groups which can be run individually: +$ phpunit --group main +$ phpunit --group appenders +$ phpunit --group configurators +$ phpunit --group filters +$ phpunit --group helpers +$ phpunit --group layouts +$ phpunit --group renderers + +Individual test classes can be run using e.g.: +$ phpunit appenders/LoggerAppenderSocketTest.php When using relative paths in the tests, be aware that "mvn test" does a changedir to this directory. So dirname(__FILE__).'/../../' is preferred.
svn commit: r1187195 - /logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java
Author: rgoers Date: Fri Oct 21 07:47:21 2011 New Revision: 1187195 URL: http://svn.apache.org/viewvc?rev=1187195&view=rev Log: Use floating point for rate Modified: logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java Modified: logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java URL: http://svn.apache.org/viewvc/logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java?rev=1187195&r1=1187194&r2=1187195&view=diff == --- logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java (original) +++ logging/log4j/branches/BRANCH_2_0_EXPERIMENTAL/rgoers/log4j2-core/src/main/java/org/apache/logging/log4j/core/filter/BurstFilter.java Fri Oct 21 07:47:21 2011 @@ -77,10 +77,10 @@ public class BurstFilter extends FilterB private final Queue available = new ConcurrentLinkedQueue(); -private BurstFilter(Level level, long rate, long maxBurst, Result onMatch, Result onMismatch) { +private BurstFilter(Level level, float rate, long maxBurst, Result onMatch, Result onMismatch) { super(onMatch, onMismatch); this.level = level; -this.burstInterval = maxBurst / rate; +this.burstInterval = (long) (NANOS_IN_SECONDS * (maxBurst / rate)); for (int i = 0; i < maxBurst; ++i) { available.add(new LogDelay()); } @@ -160,7 +160,7 @@ public class BurstFilter extends FilterB } public void setDelay(long delay) { -this.expireTime = (delay * NANOS_IN_SECONDS) + System.nanoTime(); +this.expireTime = delay + System.nanoTime(); } public long getDelay(TimeUnit timeUnit) { @@ -218,8 +218,11 @@ public class BurstFilter extends FilterB Result onMatch = match == null ? null : Result.valueOf(match); Result onMismatch = mismatch == null ? null : Result.valueOf(mismatch); Level lvl = Level.toLevel(level, Level.WARN); -long eventRate = rate == null ? DEFAULT_RATE : Long.parseLong(rate); -long max = maxBurst == null ? eventRate * DEFAULT_RATE_MULTIPLE : Long.parseLong(maxBurst); +float eventRate = rate == null ? DEFAULT_RATE : Float.parseFloat(rate); +if (eventRate <= 0) { +eventRate = DEFAULT_RATE; +} +long max = maxBurst == null ? (long) (eventRate * DEFAULT_RATE_MULTIPLE) : Long.parseLong(maxBurst); if (onMatch == null) { onMatch = Result.NEUTRAL; }