Skip to content

Commit c8a639f

Browse files
authored
Merge pull request #272 from jamezp/LOGMGR-259
[LOGMGR-259] The current parsed token should be the name of the named…
2 parents f131e68 + a859c5c commit c8a639f

File tree

2 files changed

+59
-5
lines changed

2 files changed

+59
-5
lines changed

src/main/java/org/jboss/logmanager/config/LogContextConfigurationImpl.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -664,14 +664,13 @@ public Object getObject() {
664664
expect(")", iterator);
665665
return new SimpleObjectProducer(new SubstituteFilter(pattern, replacement, true));
666666
} else {
667-
final String name = expectName(iterator);
668-
if (! filters.containsKey(name) || immediate && ! filterRefs.containsKey(name)) {
669-
throw new IllegalArgumentException(String.format("No filter named \"%s\" is defined", name));
667+
if (! filters.containsKey(token) || immediate && ! filterRefs.containsKey(token)) {
668+
throw new IllegalArgumentException(String.format("No filter named \"%s\" is defined", token));
670669
}
671670
if (immediate) {
672-
return new SimpleObjectProducer(filterRefs.get(name));
671+
return new SimpleObjectProducer(filterRefs.get(token));
673672
} else {
674-
return new RefProducer(name, filterRefs);
673+
return new RefProducer(token, filterRefs);
675674
}
676675
}
677676
}

src/test/java/org/jboss/logmanager/config/LogContextConfigurationTests.java

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.ArrayList;
2323
import java.util.Collection;
2424
import java.util.logging.Filter;
25+
import java.util.logging.LogRecord;
2526

2627
import org.jboss.logmanager.ExtLogRecord;
2728
import org.jboss.logmanager.Level;
@@ -74,6 +75,51 @@ public void testFilterParsing() throws Exception {
7475
}
7576
}
7677

78+
@Test
79+
public void testNamedFilter() {
80+
final LogContext context = LogContext.create();
81+
final LogContextConfiguration configuration = LogContextConfiguration.Factory.create(context);
82+
final LoggerConfiguration loggerConfiguration = configuration.addLoggerConfiguration(LOGGER_NAME);
83+
final Logger logger = context.getLogger(LOGGER_NAME);
84+
85+
final FilterDescription description = new FilterDescription("test", "test named filter",
86+
"test named filter | filtered", true);
87+
88+
configuration.addFilterConfiguration(null, TestFilter.class.getName(), "test");
89+
loggerConfiguration.setFilter(description.filterExpression);
90+
configuration.commit();
91+
92+
final ExtLogRecord record = create(description.logMessage);
93+
94+
final Filter filter = logger.getFilter();
95+
Assert.assertNotNull("Expected a filter on the logger, but one was not found: " + description, filter);
96+
Assert.assertEquals("Filter.isLoggable() test failed: " + description, description.isLoggable, filter.isLoggable(record));
97+
final String msg = record.getFormattedMessage();
98+
Assert.assertEquals(String.format("Expected %s found %s: %n%s", description.expectedMessage, msg, description), description.expectedMessage, msg);
99+
}
100+
101+
@Test
102+
public void testEmbeddedNamedFilter() {
103+
final LogContext context = LogContext.create();
104+
final LogContextConfiguration configuration = LogContextConfiguration.Factory.create(context);
105+
final LoggerConfiguration loggerConfiguration = configuration.addLoggerConfiguration(LOGGER_NAME);
106+
final Logger logger = context.getLogger(LOGGER_NAME);
107+
108+
final FilterDescription description = new FilterDescription("all(test)", "test named filter",
109+
"test named filter | filtered", true);
110+
configuration.addFilterConfiguration(null, TestFilter.class.getName(), "test");
111+
loggerConfiguration.setFilter(description.filterExpression);
112+
configuration.commit();
113+
114+
final ExtLogRecord record = create(description.logMessage);
115+
116+
final Filter filter = logger.getFilter();
117+
Assert.assertNotNull("Expected a filter on the logger, but one was not found: " + description, filter);
118+
Assert.assertEquals("Filter.isLoggable() test failed: " + description, description.isLoggable, filter.isLoggable(record));
119+
final String msg = record.getFormattedMessage();
120+
Assert.assertEquals(String.format("Expected %s found %s: %n%s", description.expectedMessage, msg, description), description.expectedMessage, msg);
121+
}
122+
77123
private static ExtLogRecord create(final String message) {
78124
final ExtLogRecord record = new ExtLogRecord(Level.INFO, message, Logger.class.getName());
79125
record.setLoggerName(LOGGER_NAME);
@@ -105,4 +151,13 @@ public String toString() {
105151
", isLoggable=" + isLoggable + ")";
106152
}
107153
}
154+
155+
public static class TestFilter implements Filter {
156+
157+
@Override
158+
public boolean isLoggable(final LogRecord record) {
159+
record.setMessage(record.getMessage() + " | filtered");
160+
return true;
161+
}
162+
}
108163
}

0 commit comments

Comments
 (0)