@Test public void startup_logger_prints_to_only_to_system_out() { LoggerContext ctx = underTest.configure(props); Logger startup = ctx.getLogger("startup"); assertThat(startup.isAdditive()).isFalse(); Appender appender = startup.getAppender("CONSOLE"); assertThat(appender).isInstanceOf(ConsoleAppender.class); ConsoleAppender<ILoggingEvent> consoleAppender = (ConsoleAppender<ILoggingEvent>) appender; assertThat(consoleAppender.getTarget()).isEqualTo("System.out"); assertThat(consoleAppender.getEncoder()).isInstanceOf(PatternLayoutEncoder.class); PatternLayoutEncoder patternEncoder = (PatternLayoutEncoder) consoleAppender.getEncoder(); assertThat(patternEncoder.getPattern()).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level app[][%logger{20}] %msg%n"); }
@Test public void startup_logger_prints_to_only_to_system_out() { LoggerContext ctx = underTest.configure(props); Logger startup = ctx.getLogger("startup"); assertThat(startup.isAdditive()).isFalse(); Appender appender = startup.getAppender("CONSOLE"); assertThat(appender).isInstanceOf(ConsoleAppender.class); ConsoleAppender<ILoggingEvent> consoleAppender = (ConsoleAppender<ILoggingEvent>) appender; assertThat(consoleAppender.getTarget()).isEqualTo("System.out"); assertThat(consoleAppender.getEncoder()).isInstanceOf(PatternLayoutEncoder.class); PatternLayoutEncoder patternEncoder = (PatternLayoutEncoder) consoleAppender.getEncoder(); assertThat(patternEncoder.getPattern()).isEqualTo("%d{yyyy.MM.dd HH:mm:ss} %-5level app[][%logger{20}] %msg%n"); }
private static LoggerInfo doGetLoggerInfo(Logger logger) { LoggerInfo info = new LoggerInfo(logger.getName(), logger.isAdditive()); Level level = logger.getLevel(), effectiveLevel = logger.getEffectiveLevel(); if (level != null) { info.setLevel(level.toString()); } if (effectiveLevel != null) { info.setEffectiveLevel(effectiveLevel.toString()); } List<AppenderInfo> result = doGetLoggerAppenders(logger.iteratorForAppenders()); info.setAppenders(result); return info; }
/** * @param type the logging class to add to the capturing list appender and for which to set the asked logging level */ private void initializeLogger(Class<?> type) { Logger logger = (Logger) LoggerFactory.getLogger(type); logger.addAppender(this.listAppender); this.savedLevels.put(type, logger.getLevel()); this.savedAdditivities.put(type, logger.isAdditive()); logger.setLevel(this.level.getLevel()); // Make sure only our new appender is used (and parent's appenders are not used) so that we don't generate logs // elsewhere (console, file, etc). logger.setAdditive(false); }
@Nonnull public static List<LogUiAppender> getAppenders(@Nonnull final Logger logger) { final Builder<LogUiAppender> builder = ImmutableList.builder(); final Iterator<Appender<ILoggingEvent>> iteratorForAppenders = logger.iteratorForAppenders(); while (iteratorForAppenders.hasNext()) { final Appender<ch.qos.logback.classic.spi.ILoggingEvent> appender = iteratorForAppenders.next(); builder.add(toUi(appender)); } if (logger.isAdditive()) { final Logger parent = Loggers.getParent(logger); if (parent != null) { builder.addAll(getAppenders(parent)); } } return builder.build(); }
public LogbackRecorder capture(String level) { synchronized (lock) { if (this.active) { throw new IllegalStateException(CAPTURE_EXCEPTION_MESSAGE); } this.active = true; this.additive = logger.isAdditive(); this.logger.setAdditive(false); this.level = logger.getLevel(); this.logger.setLevel(Level.valueOf(level.toUpperCase())); this.logger.addAppender(this.appender); this.appender.start(); } return this; }
public LogbackRecorder capture(String level) { synchronized (lock) { if (this.active) { throw new IllegalStateException(CAPTURE_EXCEPTION_MESSAGE); } this.active = true; this.additive = logger.isAdditive(); this.logger.setAdditive(false); this.level = logger.getLevel(); this.logger.setLevel(Level.valueOf(level.toUpperCase())); this.logger.addAppender(this.appender); this.appender.start(); } return this; }
@Test public void additivity() throws JoranException { configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "additivity.xml"); Logger logger = loggerContext.getLogger("additivityTest"); assertFalse(logger.isAdditive()); }
public String ac_log_logger_ls(Args args) { final String format = "%-5s %-30s %s\n"; boolean all = args.hasOption("a"); Formatter f = new Formatter(); f.format(format, "Level", "Appenders", "Logger"); f.format(format, "-----", "---------", "------"); for (Logger logger: getLoggers()) { List<Appender<ILoggingEvent>> appenders = getAppenders(logger); boolean hasAppenders = !appenders.isEmpty(); boolean isEndOfRoad = !logger.isAdditive(); boolean hasLevel = (logger.getLevel() != null); boolean isRoot = (logger.getName().equals(Logger.ROOT_LOGGER_NAME)); if (all || hasAppenders || isEndOfRoad || hasLevel || isRoot) { f.format(format, toString(logger.getLevel()), getNames(appenders), logger.getName()); } } return f.toString(); }
@Nonnull private static LogUiLogger toUi(@Nonnull final Logger logger) { final LogUiLogger result = new LogUiLogger(); result.setAdditive(logger.isAdditive()); result.setEffectiveLevel(toUi(logger.getEffectiveLevel())); result.setLevel(toUi(logger.getLevel())); result.setName(logger.getName()); result.setAppenders(Appenders.getAppenders(logger)); return result; }
private static LoggerInfo doGetLoggerInfo(Logger logger) { LoggerInfo info = new LoggerInfo(logger.getName(), logger.isAdditive()); Level level = logger.getLevel(), effectiveLevel = logger.getEffectiveLevel(); if (level != null) info.setLevel(level.toString()); if (effectiveLevel != null) info.setEffectiveLevel(effectiveLevel.toString()); List<AppenderInfo> result = doGetLoggerAppenders(logger.iteratorForAppenders()); info.setAppenders(result); return info; }
private static LoggerInfo doGetLoggerInfo(Logger logger) { LoggerInfo info = new LoggerInfo(logger.getName(), logger.isAdditive()); Level level = logger.getLevel(), effectiveLevel = logger.getEffectiveLevel(); if (level != null) info.setLevel(level.toString()); if (effectiveLevel != null) info.setEffectiveLevel(effectiveLevel.toString()); List<AppenderInfo> result = doGetLoggerAppenders(logger.iteratorForAppenders()); info.setAppenders(result); return info; }
private static LoggerInfo doGetLoggerInfo(Logger logger) { LoggerInfo info = new LoggerInfo(logger.getName(), logger.isAdditive()); Level level = logger.getLevel(), effectiveLevel = logger.getEffectiveLevel(); if (level != null) { info.setLevel(level.toString()); } if (effectiveLevel != null) { info.setEffectiveLevel(effectiveLevel.toString()); } List<AppenderInfo> result = doGetLoggerAppenders(logger.iteratorForAppenders()); info.setAppenders(result); return info; }
@Override public void start() { LoggerContext context = (LoggerContext) getContext(); for (Logger logger: context.getLoggerList()) { RootFilterThresholds.setRoot(LoggerName.getInstance(logger.getName()), !logger.isAdditive()); } for (Appender<ILoggingEvent> appender: getAppenders(context)) { String appenderName = appender.getName(); RootFilterThresholds.addAppender(appenderName); for (Threshold threshold: _thresholds) { if (threshold.isApplicableToAppender(appender)) { RootFilterThresholds.setThreshold( threshold.getLogger(), appenderName, threshold.getLevel()); } } CellThresholdFilterCompanion filter = new CellThresholdFilterCompanion(appenderName); filter.start(); appender.addFilter(filter); } super.start(); }