Refine search
@SuppressWarnings("unused") private void testUnixTime(final String pattern) throws Exception { final PatternLayout layout = PatternLayout.newBuilder().withPattern(pattern + " %m") .withConfiguration(ctx.getConfiguration()).build(); final LogEvent event1 = Log4jLogEvent.newBuilder() // .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") // .setLevel(Level.INFO) // .setMessage(new SimpleMessage("Hello, world 1!")).build(); final byte[] result1 = layout.toByteArray(event1); assertEquals(event1.getTimeMillis() + " Hello, world 1!", new String(result1)); // System.out.println("event1=" + event1.getMillis()); final LogEvent event2 = Log4jLogEvent.newBuilder() // .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") // .setLevel(Level.INFO) // .setMessage(new SimpleMessage("Hello, world 2!")).build(); final byte[] result2 = layout.toByteArray(event2); assertEquals(event2.getTimeMillis() + " Hello, world 2!", new String(result2)); // System.out.println("event2=" + event2.getMillis()); }
@PluginFactory public static MemoryAppender createAppender( @PluginElement("Layout") Layout<? extends Serializable> layout, @PluginElement("Filter") final Filter filter, @PluginAttribute("name") final String name, @PluginAttribute(value = "bufferSize", defaultInt = 500) final String bufferSize, @PluginAttribute(value = "ignoreExceptions", defaultBoolean = true) final String ignore) { if (name == null) { LOGGER.error("No name provided for MemoryAppender"); return null; } if (layout == null) { layout = PatternLayout.createDefaultLayout(); } final int size = Integer.parseInt(bufferSize); final boolean ignoreExceptions = Booleans.parseBoolean(ignore, true); return new MemoryAppender(name, filter, layout, ignoreExceptions, size); }
/** * Add an appender to Log4j which sends all INFO+ messages to a separate file which will be used * later to scan for suspect strings. The pattern of the messages conforms to the original log * format so that hydra will be able to parse them. */ private static void addSuspectFileAppender(final String workspaceDir) { final String suspectFilename = new File(workspaceDir, SUSPECT_FILENAME).getAbsolutePath(); final LoggerContext appenderContext = ((org.apache.logging.log4j.core.Logger) LogManager .getLogger(Configuration.MAIN_LOGGER_NAME)) .getContext(); final PatternLayout layout = PatternLayout.createLayout( "[%level{lowerCase=true} %date{yyyy/MM/dd HH:mm:ss.SSS z} <%thread> tid=%tid] %message%n%throwable%n", null, null, null, Charset.defaultCharset(), true, false, "", ""); final FileAppender fileAppender = FileAppender.createAppender(suspectFilename, "true", "false", DUnitLauncher.class.getName(), "true", "false", "false", "0", layout, null, null, null, appenderContext.getConfiguration()); fileAppender.start(); LoggerConfig loggerConfig = appenderContext.getConfiguration().getLoggerConfig(Configuration.MAIN_LOGGER_NAME); loggerConfig.addAppender(fileAppender, Level.INFO, null); }
@PluginFactory public static StringAppender createStringAppender( @PluginAttribute("name") String nullablePatternString) { PatternLayout layout; if (nullablePatternString == null) { layout = PatternLayout.createDefaultLayout(); } else { layout = PatternLayout.createLayout(nullablePatternString, null, configuration, null, null, true, false, null, null); } return new StringAppender(APPENDER_NAME, layout, null, false, true, new StringOutputStreamManager(new ByteArrayOutputStream(), "StringStream", layout)); }
@Test public void testUsePlatformDefaultIfNoCharset() throws Exception { final PatternLayout layout = PatternLayout.newBuilder().withPattern("%m") .withConfiguration(ctx.getConfiguration()).build(); assertEquals(Charset.defaultCharset(), layout.getCharset()); }
/** * Tests LOG4J2-962. */ @Test public void testHeaderFooterMainLookup() { MainMapLookup.setMainArguments("value0", "value1", "value2"); final PatternLayout layout = PatternLayout.newBuilder().withConfiguration(ctx.getConfiguration()) .withHeader("${main:0}").withFooter("${main:2}").build(); final byte[] header = layout.getHeader(); assertNotNull("No header", header); final String headerStr = new String(header); assertTrue(headerStr, headerStr.contains("value0")); // final byte[] footer = layout.getFooter(); assertNotNull("No footer", footer); final String footerStr = new String(footer); assertTrue(footerStr, footerStr.contains("value2")); }
/** * Creates a new instance of the class. Required by Log4J2. * @param config the configuration * @param options the options * @return a new instance, or {@code null} if the options are invalid */ public static ColorConverter newInstance(Configuration config, String[] options) { if (options.length < 1) { LOGGER.error("Incorrect number of options on style. " + "Expected at least 1, received {}", options.length); return null; } if (options[0] == null) { LOGGER.error("No pattern supplied on style"); return null; } PatternParser parser = PatternLayout.createPatternParser(config); List<PatternFormatter> formatters = parser.parse(options[0]); AnsiElement element = (options.length != 1) ? ELEMENTS.get(options[1]) : null; return new ColorConverter(formatters, element); }
@PluginFactory public static GelfLogAppender createAppender( @PluginConfiguration final Configuration config, LOGGER.error("No name provided for " + GelfLogAppender.class.getSimpleName()); return null; LOGGER.error("No host provided for " + GelfLogAppender.class.getSimpleName(), new Throwable()); return null; PatternLayout patternLayout = newBuilder().withPattern(originHost).withConfiguration(config) .withNoConsoleNoAnsi(false).withAlwaysWriteExceptions(false).build(); mdcGelfMessageAssembler.setOriginHost(patternLayout.toSerializable(new Log4jLogEvent())); layout = PatternLayout.newBuilder().withPattern(layoutString).build();
@PluginFactory public static GelfLogField createField(@PluginConfiguration final Configuration config, @PluginAttribute("name") String name, @PluginAttribute("literal") String literalValue, @PluginAttribute("mdc") String mdc, @PluginAttribute("pattern") String pattern) { final boolean isPattern = Strings.isNotEmpty(pattern); final boolean isLiteralValue = Strings.isNotEmpty(literalValue); final boolean isMDC = Strings.isNotEmpty(mdc); if (Strings.isEmpty(name)) { LOGGER.error("The name is empty"); return null; } if ((isPattern && isLiteralValue) || (isPattern && isMDC) || (isLiteralValue && isMDC)) { LOGGER.error("The pattern, literal, and mdc attributes are mutually exclusive."); return null; } if (isPattern) { PatternLayout patternLayout = newBuilder().withPattern(pattern).withConfiguration(config) .withNoConsoleNoAnsi(false).withAlwaysWriteExceptions(false).build(); return new GelfLogField(name, null, null, patternLayout); } return new GelfLogField(name, literalValue, mdc, null); } }
ctx.reconfigure(); final Configuration config = ctx.getConfiguration(); assertThat(config, instanceOf(XmlConfiguration.class)); for (final StatusListener listener : StatusLogger.getLogger().getListeners()) { final Layout<? extends Serializable> layout = PatternLayout.newBuilder() .withPattern(PatternLayout.SIMPLE_CONVERSION_PATTERN) .withConfiguration(config) loggerConfig.addAppender(appender, null, null); config.addLogger("org.apache.logging.log4j", loggerConfig); ctx.updateLoggers(); final Logger logger = ctx.getLogger(CustomConfigurationTest.class.getName()); logger.info("This is a test"); final File file = new File(LOG_FILE); assertThat(file, exists());
@Override public ServletAppender build() { final String name = getName(); if (name == null) { LOGGER.error("No name provided for ServletAppender"); } final ServletContext servletContext = WebLoggerContextUtils.getServletContext(); if (servletContext == null) { LOGGER.error("No servlet context is available"); return null; } Layout<? extends Serializable> layout = getLayout(); if (layout == null) { layout = PatternLayout.createDefaultLayout(); } else if (!(layout instanceof AbstractStringLayout)) { LOGGER.error("Layout must be a StringLayout to log to ServletContext"); return null; } return new ServletAppender(name, layout, getFilter(), servletContext, isIgnoreExceptions(), logThrowables); }
@PluginFactory public static TestngReportAppender createAppender( @PluginElement("Layout") Layout<? extends Serializable> layout, @PluginElement("Filters") final Filter filter, @PluginAttribute("name") final String name, @PluginAttribute("justContent") final String justContent) { if (name == null) { LOGGER.error("No name provided for TestngReportAppender"); return null; } if (layout == null) { layout = PatternLayout.createLayout(null, null, null, null, null); } return new TestngReportAppender(name, filter, layout, justContent); }
@Override public ColumnMapping build() { if (pattern != null) { layout = PatternLayout.newBuilder() .withPattern(pattern) .withConfiguration(configuration) .build(); } if (!(layout != null || literal != null || Date.class.isAssignableFrom(type) || ReadOnlyStringMap.class.isAssignableFrom(type) || ThreadContextMap.class.isAssignableFrom(type) || ThreadContextStack.class.isAssignableFrom(type))) { LOGGER.error("No layout or literal value specified and type ({}) is not compatible with " + "ThreadContextMap, ThreadContextStack, or java.util.Date", type); return null; } return new ColumnMapping(name, layout, literal, type); } }
public static void appendFileLogger(Level level, String name, Path filePath) { final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); final Configuration config = ctx.getConfiguration(); Layout layout = PatternLayout.createLayout("%d{HH:mm} [%-5p] %msg%n", null, config, null, null, true, false, null, null); Appender appender = FileAppender.createAppender(filePath.toFile().getAbsolutePath(), "true", "false", name, "true", "false", "false", "8192", layout, null, "false", null, config); appender.start(); config.getRootLogger().addAppender(appender, level, null); ctx.updateLoggers(); }
@Test public void testRegex() throws Exception { final PatternLayout layout = PatternLayout.newBuilder().withPattern(regexPattern) .withConfiguration(ctx.getConfiguration()).build(); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName(this.getClass().getName()).setLoggerFqcn("org.apache.logging.log4j.core.Logger") // .setLevel(Level.INFO) // .setMessage(new SimpleMessage("Hello, world!")).build(); assertToByteArray("org/apache/logging/log4j/core/layout/PatternLayoutTest Hello, world!", layout, event); assertEncode("org/apache/logging/log4j/core/layout/PatternLayoutTest Hello, world!", layout, event); }
final PatternLayout layout = PatternLayout.newBuilder().withPattern("%c{1} %m") .withConfiguration(ctx.getConfiguration()).build(); final LogEvent event1 = 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 result1 = layout.toSerializable(event1); assertEquals(this.getClass().getName().substring(this.getClass().getName().lastIndexOf(".") + 1) + " Hello, world 1!", new String(result1)); final PatternLayout layout = PatternLayout.newBuilder().withPattern("%c{2} %m") .withConfiguration(ctx.getConfiguration()).build(); final LogEvent event1 = 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 result1 = layout.toSerializable(event1); String name = this.getClass().getName().substring(0, this.getClass().getName().lastIndexOf(".")); name = name.substring(0, name.lastIndexOf(".")); final PatternLayout layout = PatternLayout.newBuilder().withPattern("%c{20} %m") .withConfiguration(ctx.getConfiguration()).build(); final LogEvent event1 = 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 result1 = layout.toSerializable(event1); assertEquals(this.getClass().getName() + " Hello, world 1!", new String(result1));
/** * Creates console appender with some reasonable default logging settings. * * @return Logger with auto configured console appender. */ public Logger createConsoleLogger() { // from http://logging.apache.org/log4j/2.x/manual/customconfig.html final LoggerContext ctx = impl.getContext(); final Configuration cfg = ctx.getConfiguration(); PatternLayout.Builder builder = PatternLayout.newBuilder() .withPattern("%d{ISO8601}][%-5p][%t][%c{1}] %m%n") .withCharset(Charset.defaultCharset()) .withAlwaysWriteExceptions(false) .withNoConsoleNoAnsi(false); PatternLayout layout = builder.build(); ConsoleAppender.Builder consoleAppenderBuilder = ConsoleAppender.newBuilder() .withName(CONSOLE_APPENDER) .withLayout(layout); ConsoleAppender consoleApp = consoleAppenderBuilder.build(); consoleApp.start(); cfg.addAppender(consoleApp); cfg.getRootLogger().addAppender(consoleApp, Level.TRACE, null); ctx.updateLoggers(cfg); return ctx.getRootLogger(); }
String addAppender(final Writer writer) { final String name = "openfire-s2s-test-appender-" + StringUtils.randomString( 10 ); final LoggerContext context = LoggerContext.getContext(false); final Configuration config = context.getConfiguration(); final PatternLayout layout = PatternLayout.createDefaultLayout(config); final Appender appender = WriterAppender.createAppender(layout, null, writer, name, false, true); appender.start(); config.addAppender(appender); final Level level = null; final Filter filter = null; for (final LoggerConfig loggerConfig : config.getLoggers().values()) { loggerConfig.addAppender(appender, level, filter); } config.getRootLogger().addAppender(appender, level, filter); return name; }
@PluginFactory public static NullAppender createNullAppender() { return new NullAppender("NullAppender", null, PatternLayout.createDefaultLayout(), true); }
@Test public void testHeaderFooterThreadContext() throws Exception { final PatternLayout layout = PatternLayout.newBuilder().withPattern("%d{UNIX} %m") .withConfiguration(ctx.getConfiguration()).withHeader("${ctx:header}").withFooter("${ctx:footer}") .build(); ThreadContext.put("header", "Hello world Header"); ThreadContext.put("footer", "Hello world Footer"); final byte[] header = layout.getHeader(); assertNotNull("No header", header); assertTrue("expected \"Hello world Header\", actual " + Strings.dquote(new String(header)), new String(header).equals(new String("Hello world Header"))); }