/** * 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(); }
private void testConsoleStreamManagerDoesNotClose(final PrintStream ps, final Target targetName, final SystemSetter systemSetter) { try { systemSetter.systemSet(psMock); final Layout<String> layout = PatternLayout.newBuilder().withAlwaysWriteExceptions(true).build(); final ConsoleAppender app = ConsoleAppender.newBuilder().withLayout(layout).setTarget(targetName) .withName("Console").withIgnoreExceptions(false).build(); app.start(); assertTrue("Appender did not start", app.isStarted()); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("TestLogger") // .setLoggerFqcn(ConsoleAppenderTest.class.getName()) // .setLevel(Level.INFO) // .setMessage(new SimpleMessage("Test")) // .build(); app.append(event); app.stop(); assertFalse("Appender did not stop", app.isStarted()); } finally { systemSetter.systemSet(ps); } then(psMock).should(atLeastOnce()).write(any(byte[].class), anyInt(), anyInt()); then(psMock).should(atLeastOnce()).flush(); }
private void testFollowSystemPrintStream(final PrintStream ps, final Target target, final SystemSetter systemSetter) { final ConsoleAppender app = ConsoleAppender.newBuilder().setTarget(target).setFollow(true) .withIgnoreExceptions(false).withName("test").build(); Assert.assertEquals(target, app.getTarget()); app.start(); try { final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("TestLogger") // .setLoggerFqcn(ConsoleAppenderTest.class.getName()) // .setLevel(Level.INFO) // .setMessage(new SimpleMessage("Test")) // .build(); assertTrue("Appender did not start", app.isStarted()); systemSetter.systemSet(new PrintStream(baos)); try { app.append(event); } finally { systemSetter.systemSet(ps); } final String msg = baos.toString(); assertNotNull("No message", msg); assertTrue("Incorrect message: \"" + msg + "\"", msg.endsWith("Test" + Strings.LINE_SEPARATOR)); } finally { app.stop(); } assertFalse("Appender did not stop", app.isStarted()); }
PatternLayout layout = PatternLayout.newBuilder().withConfiguration(configuration) .withPattern("%m%n").build(); ConsoleAppender consoleAppender = ConsoleAppender.newBuilder().withName(CONSOLE_APPENDER_NAME) .setConfiguration(configuration) .setFollow(true) .setTarget(Target.SYSTEM_ERR) .withLayout(layout) .build(); consoleAppender.start(); rootLogger.removeAppender(CONSOLE_APPENDER_NAME);
/** * 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(); }
public static void setAppender() { LoggerContext ctx = (LoggerContext) LogManager.getContext(true); org.apache.logging.log4j.core.config.Configuration config = ctx.getConfiguration(); // If the event logger already exists, do nothing if (config.getLoggers().containsKey(LOGGERNAME)) { return; } Layout<String> layout = PatternLayout.newBuilder().withPattern("%msg%n").withConfiguration(config).build(); Appender jsonappender = ConsoleAppender.newBuilder() .withName(APPENDERNAME) .setTarget(ConsoleAppender.Target.SYSTEM_ERR) .withLayout(layout) .setConfiguration(config) .build(); jsonappender.start(); config.addAppender(jsonappender); AppenderRef ref = AppenderRef.createAppenderRef(APPENDERNAME, null, null); LoggerConfig loggerConfig = LoggerConfig.createLogger(false, LOGLEVEL, LOGGERNAME, "false", new AppenderRef[] {ref}, new Property[]{}, config, (Filter) null); loggerConfig.addAppender(jsonappender, null, null); config.removeLogger(LOGGERNAME); config.addLogger(LOGGERNAME, loggerConfig); ctx.updateLoggers(); } }
/** * @since 9.10 */ public void setConsoleLogThreshold(String level) { if (consoleAppender != null) { return; } Logger rootLogger = LoggerContext.getContext(false).getRootLogger(); consoleAppender = (ConsoleAppender) rootLogger.getAppenders().get(CONSOLE_APPENDER); rootLogger.removeAppender(consoleAppender); ConsoleAppender newAppender = ConsoleAppender.newBuilder() .withName(CONSOLE_LOG_FEATURE_APPENDER) .setTarget(Target.SYSTEM_OUT) .withFilter(ThresholdFilter.createFilter(Level.toLevel(level), null, null)) .build(); newAppender.start(); rootLogger.addAppender(newAppender); hiddenAppender = newAppender; }
/** * Prepare a console logger with a default layout. This allows {@link Logger} * instances to be used while still being useful as the line to prepare logger * can be removed and the default log4j.properties will be correctly listened * to. */ public static void prepareConsoleLogger() { final String PATTERN = "%m\n"; final PatternLayout layout = PatternLayout.newBuilder().withPattern(PATTERN).build(); final ThresholdFilter filter = ThresholdFilter.createFilter(Level.DEBUG, Result.ACCEPT, Result.DENY); final ConsoleAppender console = ConsoleAppender.newBuilder().withName("default-consoleappender") .withLayout(layout).withFilter(filter).build(); // add appender to any Logger (here is root) final Logger root = LogManager.getRootLogger(); if (root instanceof org.apache.logging.log4j.core.Logger) ((org.apache.logging.log4j.core.Logger) root).addAppender(console); }
private static void initLogger() { LoggerContext context = LoggerContext.getContext(false); Configuration configuration = context.getConfiguration(); LoggerConfig rootLogger = configuration.getRootLogger(); if (Logger.getRootLogger().getAppender(CONSOLE_APPENDER_NAME) == null) { PatternLayout layout = PatternLayout.newBuilder().withConfiguration(configuration) .withPattern("%m%n").build(); ConsoleAppender consoleAppender = ConsoleAppender.newBuilder().withName(CONSOLE_APPENDER_NAME) .setConfiguration(configuration) .setFollow(true) .withLayout(layout) .build(); consoleAppender.start(); configuration.addAppender(consoleAppender); rootLogger.addAppender(consoleAppender, Level.INFO, null); context.updateLoggers(); } }
private ConsoleAppender consoleAppender(Properties properties) { SystemPropertiesGetter propertiesGetter = new SystemPropertiesGetter(properties); String logPattern = propertiesGetter.getProperty( SOFA_MIDDLEWARE_LOG_CONSOLE_LOG4J2_PATTERN, SOFA_MIDDLEWARE_LOG_CONSOLE_LOG4J2_PATTERN_DEFAULT); ConsoleAppender.Builder builder = ConsoleAppender.newBuilder(); builder.withLayout(PatternLayout.newBuilder().withPattern(logPattern).build()).withName( SOFA_CONSOLE); ConsoleAppender consoleAppender = builder.build(); consoleAppender.start(); return consoleAppender; }
public static ConsoleAppender makeConsoleAppender(PatternLayout layout, String name) { return ConsoleAppender.newBuilder() .withLayout(layout) .withBufferedIo(true) .withName(name) .build(); }
private void forceConsoleAppender(MuleLoggerContext context) { doAddAppender(context, ConsoleAppender.newBuilder() .withLayout(createLayout(context.getConfiguration())) .withName(FORCED_CONSOLE_APPENDER_NAME) .build()); }
@Override public GeodeConsoleAppender build() { ConsoleAppender.Builder delegate = new ConsoleAppender.Builder(); // AbstractAppender delegate.withFilter(getFilter()); delegate.withName(getName() + "_DELEGATE"); delegate.withIgnoreExceptions(isIgnoreExceptions()); delegate.withLayout(getLayout()); // AbstractOutputStreamAppender delegate.withImmediateFlush(isImmediateFlush()); delegate.withBufferedIo(isBufferedIo()); delegate.withBufferSize(getBufferSize()); // ConsoleAppender delegate.setTarget(target); delegate.setFollow(follow); delegate.setDirect(direct); Layout<? extends Serializable> layout = getOrCreateLayout(target.getDefaultCharset()); return new GeodeConsoleAppender(getName(), layout, getFilter(), getManager(target, follow, direct, layout), isIgnoreExceptions(), startPaused, debug, delegate.build()); } }
/** * Tests https://issues.apache.org/jira/browse/LOG4J2-1636 * * Tested with Oracle 7 and 8 and IBM Java 8. */ @Test public void testDefaultLayoutDefaultCharset() { final ConsoleAppender appender = ConsoleAppender.newBuilder().withName("test").build(); final PatternLayout layout = (PatternLayout) appender.getLayout(); final String charsetName = System.getProperty("sun.stdout.encoding"); final String expectedName = charsetName != null ? charsetName : Charset.defaultCharset().name(); Assert.assertEquals(expectedName, layout.getCharset().name()); }