@Test public void testFilter() { final KeyValuePair[] pairs = new KeyValuePair[] { new KeyValuePair("FromAccount", "211000"), new KeyValuePair("ToAccount", "123456")}; MapFilter filter = MapFilter.createFilter(pairs, "and", null, null); filter.start(); StringMapMessage msg = new StringMapMessage(); msg.put("ToAccount", "123456"); msg.put("FromAccount", "211000"); msg.put("Amount", "1000.00"); assertTrue(filter.isStarted()); assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.DEBUG, null, msg, null)); msg.put("ToAccount", "111111"); assertSame(Filter.Result.DENY, filter.filter(null, Level.ERROR, null, msg, null)); filter = MapFilter.createFilter(pairs, "or", null, null); filter.start(); msg = new StringMapMessage(); msg.put("ToAccount", "123456"); msg.put("FromAccount", "211000"); msg.put("Amount", "1000.00"); assertTrue(filter.isStarted()); assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.DEBUG, null, msg, null)); msg.put("ToAccount", "111111"); assertSame(Filter.Result.NEUTRAL, filter.filter(null, Level.ERROR, null, msg, null)); }
@Test public void testConfig() { final Configuration config = context.getConfiguration(); final Filter filter = config.getFilter(); assertNotNull("No MapFilter", filter); assertTrue("Not a MapFilter", filter instanceof MapFilter); final MapFilter mapFilter = (MapFilter) filter; assertFalse("Should not be And filter", mapFilter.isAnd()); final Map<String, List<String>> map = mapFilter.getMap(); assertNotNull("No Map", map); assertFalse("No elements in Map", map.isEmpty()); assertEquals("Incorrect number of elements in Map", 1, map.size()); assertTrue("Map does not contain key eventId", map.containsKey("eventId")); assertEquals("List does not contain 2 elements", 2, map.get("eventId").size()); final Logger logger = LogManager.getLogger(MapFilterTest.class); final Map<String, String> eventMap = new HashMap<>(); eventMap.put("eventId", "Login"); logger.debug(new StringMapMessage(eventMap)); final ListAppender app = context.getListAppender("LIST"); final List<String> msgs = app.getMessages(); assertNotNull("No messages", msgs); assertFalse("No messages", msgs.isEmpty()); } }
@Override public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg, final Throwable t) { if (msg instanceof MapMessage) { return filter((MapMessage<?, ?>) msg) ? onMatch : onMismatch; } return Result.NEUTRAL; }
return new MapFilter(map, isAnd, match, mismatch);
@Override public Result filter(final LogEvent event) { final Message msg = event.getMessage(); if (msg instanceof MapMessage) { return filter((MapMessage<?, ?>) msg) ? onMatch : onMismatch; } return Result.NEUTRAL; }
@Override public Result filter(final LogEvent event) { return super.filter(event.getContextData()) ? onMatch : onMismatch; }
@Override public Result filter(final LogEvent event) { final Message msg = event.getMessage(); if (msg instanceof StructuredDataMessage) { return filter((StructuredDataMessage) msg); } return super.filter(event); }