You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/11/13 13:34:15 UTC
logging-log4j2 git commit: LOG4J2-1706 Make TimeFilter usable as
global filter and as logger filter. In that case, filter on system time.
Repository: logging-log4j2
Updated Branches:
refs/heads/master 566b76b90 -> a3e0b3f7e
LOG4J2-1706 Make TimeFilter usable as global filter and as logger filter. In that case, filter on system time.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/a3e0b3f7
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/a3e0b3f7
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/a3e0b3f7
Branch: refs/heads/master
Commit: a3e0b3f7e03ea00059cd611ef6fe0e4f98d87e1a
Parents: 566b76b
Author: rpopma <rp...@apache.org>
Authored: Sun Nov 13 22:34:14 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Sun Nov 13 22:34:14 2016 +0900
----------------------------------------------------------------------
.../logging/log4j/core/filter/TimeFilter.java | 5 ++-
.../log4j/core/filter/TimeFilterTest.java | 40 +++++++++++++++++---
src/changes/changes.xml | 3 ++
3 files changed, 41 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a3e0b3f7/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
index 564059a..e05ef19 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/TimeFilter.java
@@ -30,6 +30,8 @@ import org.apache.logging.log4j.core.config.Node;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
import org.apache.logging.log4j.core.config.plugins.PluginFactory;
+import org.apache.logging.log4j.core.util.Clock;
+import org.apache.logging.log4j.core.util.ClockFactory;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.util.PerformanceSensitive;
@@ -39,6 +41,7 @@ import org.apache.logging.log4j.util.PerformanceSensitive;
@Plugin(name = "TimeFilter", category = Node.CATEGORY, elementType = Filter.ELEMENT_TYPE, printObject = true)
@PerformanceSensitive("allocation")
public final class TimeFilter extends AbstractFilter {
+ private static final Clock CLOCK = ClockFactory.getClock();
/**
* Length of hour in milliseconds.
@@ -120,7 +123,7 @@ public final class TimeFilter extends AbstractFilter {
}
private Result filter() {
- return Result.NEUTRAL;
+ return filter(CLOCK.currentTimeMillis());
}
@Override
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a3e0b3f7/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
index e39d7db..4ac0b40 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/filter/TimeFilterTest.java
@@ -23,6 +23,11 @@ import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.impl.Log4jLogEvent;
+import org.apache.logging.log4j.core.util.Clock;
+import org.apache.logging.log4j.core.util.ClockFactory;
+import org.apache.logging.log4j.core.util.ClockFactoryTest;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
@@ -31,6 +36,25 @@ import static org.junit.Assert.*;
*
*/
public class TimeFilterTest {
+ private static long CLOCKTIME = System.currentTimeMillis();
+
+ /** Helper class */
+ public static class FixedTimeClock implements Clock {
+ @Override
+ public long currentTimeMillis() {
+ return CLOCKTIME;
+ }
+ }
+
+ @BeforeClass
+ public static void beforeClass() {
+ System.setProperty(ClockFactory.PROPERTY_NAME, FixedTimeClock.class.getName());
+ }
+
+ @AfterClass
+ public static void afterClass() throws IllegalAccessException {
+ ClockFactoryTest.resetClocks();
+ }
@Test
public void testTime() {
@@ -39,17 +63,21 @@ public class TimeFilterTest {
assertTrue(filter.isStarted());
final Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("America/LosAngeles"));
cal.set(Calendar.HOUR_OF_DAY, 2);
- long tod = cal.getTimeInMillis();
- LogEvent event = Log4jLogEvent.newBuilder().setTimeMillis(tod).build();
+ CLOCKTIME = cal.getTimeInMillis();
+ LogEvent event = Log4jLogEvent.newBuilder().setTimeMillis(CLOCKTIME).build();
assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, (Object) null, (Throwable) null));
assertSame(Filter.Result.NEUTRAL, filter.filter(event));
+
cal.roll(Calendar.DAY_OF_MONTH, true);
- tod = cal.getTimeInMillis();
- event = Log4jLogEvent.newBuilder().setTimeMillis(tod).build();
+ CLOCKTIME = cal.getTimeInMillis();
+ event = Log4jLogEvent.newBuilder().setTimeMillis(CLOCKTIME).build();
assertSame(Filter.Result.NEUTRAL, filter.filter(event));
+ assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, (Object) null, (Throwable) null));
+
cal.set(Calendar.HOUR_OF_DAY, 4);
- tod = cal.getTimeInMillis();
- event = Log4jLogEvent.newBuilder().setTimeMillis(tod).build();
+ CLOCKTIME = cal.getTimeInMillis();
+ event = Log4jLogEvent.newBuilder().setTimeMillis(CLOCKTIME).build();
+ assertSame(Filter.Result.DENY, filter.filter(null, Level.ERROR, null, (Object) null, (Throwable) null));
assertSame(Filter.Result.DENY, filter.filter(event));
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a3e0b3f7/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 155ff8f..b9aa337 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -30,6 +30,9 @@
<action issue="LOG4J2-1685" dev="mikes" type="fix" due-to="Raman Gupta">
Option 'disableAnsi' in PatternLayout to unconditionally disable ANSI escape codes.
</action>
+ <action issue="LOG4J2-1706" dev="rpopma" type="fix">
+ Make TimeFilter usable as global filter and as logger filter.
+ </action>
<action issue="LOG4J2-1680" dev="rpopma" type="fix">
(GC) Avoid allocating temporary objects in TimeFilter.
</action>