@Test public void testPatternSelector() throws Exception { final PatternMatch[] patterns = new PatternMatch[1]; patterns[0] = new PatternMatch("FLOW", "%d %-5p [%t]: ====== %C{1}.%M:%L %m ======%n"); final PatternSelector selector = MarkerPatternSelector.createSelector(patterns, "%d %-5p [%t]: %m%n", true, true, ctx.getConfiguration()); final PatternLayout layout = PatternLayout.newBuilder().withPatternSelector(selector) .withConfiguration(ctx.getConfiguration()).build(); final LogEvent event1 = Log4jLogEvent.newBuilder() // .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.layout.PatternSelectorTest$FauxLogger") .setMarker(MarkerManager.getMarker("FLOW")) .setLevel(Level.TRACE) // .setIncludeLocation(true) .setMessage(new SimpleMessage("entry")).build(); final String result1 = new FauxLogger().formatEvent(event1, layout); final String expectSuffix1 = String.format("====== PatternSelectorTest.testPatternSelector:53 entry ======%n"); assertTrue("Unexpected result: " + result1, result1.endsWith(expectSuffix1)); final LogEvent event2 = Log4jLogEvent.newBuilder() // .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") // .setLevel(Level.INFO) // .setMessage(new SimpleMessage("Hello, world 1!")).build(); final String result2 = new String(layout.toByteArray(event2)); final String expectSuffix2 = String.format("Hello, world 1!%n"); assertTrue("Unexpected result: " + result2, result2.endsWith(expectSuffix2)); }
private MarkerPatternSelector(final PatternMatch[] properties, final String defaultPattern, final boolean alwaysWriteExceptions, final boolean disableAnsi, final boolean noConsoleNoAnsi, final Configuration config) { final PatternParser parser = PatternLayout.createPatternParser(config); for (final PatternMatch property : properties) { try { final List<PatternFormatter> list = parser.parse(property.getPattern(), alwaysWriteExceptions, disableAnsi, noConsoleNoAnsi); formatterMap.put(property.getKey(), list.toArray(new PatternFormatter[list.size()])); patternMap.put(property.getKey(), property.getPattern()); } catch (final RuntimeException ex) { throw new IllegalArgumentException("Cannot parse pattern '" + property.getPattern() + "'", ex); } } try { final List<PatternFormatter> list = parser.parse(defaultPattern, alwaysWriteExceptions, disableAnsi, noConsoleNoAnsi); defaultFormatters = list.toArray(new PatternFormatter[list.size()]); this.defaultPattern = defaultPattern; } catch (final RuntimeException ex) { throw new IllegalArgumentException("Cannot parse pattern '" + defaultPattern + "'", ex); } }
/** * @deprecated Use {@link #newBuilder()} instead. This will be private in a future version. */ @Deprecated public ScriptPatternSelector(final AbstractScript script, final PatternMatch[] properties, final String defaultPattern, final boolean alwaysWriteExceptions, final boolean disableAnsi, final boolean noConsoleNoAnsi, final Configuration config) { this.script = script; this.configuration = config; if (!(script instanceof ScriptRef)) { config.getScriptManager().addScript(script); } final PatternParser parser = PatternLayout.createPatternParser(config); for (final PatternMatch property : properties) { try { final List<PatternFormatter> list = parser.parse(property.getPattern(), alwaysWriteExceptions, disableAnsi, noConsoleNoAnsi); formatterMap.put(property.getKey(), list.toArray(new PatternFormatter[list.size()])); patternMap.put(property.getKey(), property.getPattern()); } catch (final RuntimeException ex) { throw new IllegalArgumentException("Cannot parse pattern '" + property.getPattern() + "'", ex); } } try { final List<PatternFormatter> list = parser.parse(defaultPattern, alwaysWriteExceptions, disableAnsi, noConsoleNoAnsi); defaultFormatters = list.toArray(new PatternFormatter[list.size()]); this.defaultPattern = defaultPattern; } catch (final RuntimeException ex) { throw new IllegalArgumentException("Cannot parse pattern '" + defaultPattern + "'", ex); } }
@Test public void testPatternSelector() throws Exception { final PatternMatch[] patterns = new PatternMatch[1]; patterns[0] = new PatternMatch("FLOW", "%d %-5p [%t]: ====== %C{1}.%M:%L %m ======%n"); final PatternSelector selector = MarkerPatternSelector.createSelector(patterns, "%d %-5p [%t]: %m%n", true, true, ctx.getConfiguration()); final PatternLayout layout = PatternLayout.newBuilder().withPatternSelector(selector) .withConfiguration(ctx.getConfiguration()).build(); final LogEvent event1 = Log4jLogEvent.newBuilder() // .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.layout.PatternLayoutTest$FauxLogger") .setMarker(MarkerManager.getMarker("FLOW")) .setLevel(Level.TRACE) // .setIncludeLocation(true) .setMessage(new SimpleMessage("entry")).build(); final String result1 = new FauxLogger().formatEvent(event1, layout); final String expectPattern1 = String.format(".*====== PatternLayoutTest.testPatternSelector:\\d+ entry ======%n"); assertTrue("Unexpected result: " + result1, result1.matches(expectPattern1)); final LogEvent event2 = Log4jLogEvent.newBuilder() // .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") // .setLevel(Level.INFO) // .setMessage(new SimpleMessage("Hello, world 1!")).build(); final String result2 = new String(layout.toByteArray(event2)); final String expectSuffix2 = String.format("Hello, world 1!%n"); assertTrue("Unexpected result: " + result2, result2.endsWith(expectSuffix2)); }
@Override public PatternMatch build() { return new PatternMatch(key, pattern); }
protected Object readResolve() throws ObjectStreamException { return new PatternMatch(key, pattern); } }
private MarkerPatternSelector createPatternSelector() { PatternMatch[] pMatches = new PatternMatch[1]; pMatches[0] = new PatternMatch(Markers.REQUEST_MARKER.getName(), LayoutPatterns.getPattern( PATTERN_KEY.REQUEST)); return new MarkerPatternSelector(pMatches, LayoutPatterns.getPattern(PATTERN_KEY.APPLICATION), false, false, config); }