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/

2011-10-21 Thread rgoers
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

2011-10-21 Thread ihabunek
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

2011-10-21 Thread bodewig
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

2011-10-21 Thread ihabunek
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

2011-10-21 Thread rgoers
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;
 }