TinylogLoggingConfiguration { public Level calculateMinimumLevel(final Level globalLevel, final Map<String, Level> customLevels) { Level minimumLevel = globalLevel; for (Level level : customLevels.values()) { if (level.ordinal() < minimumLevel.ordinal()) { minimumLevel = level; } } return minimumLevel; } TinylogLoggingConfiguration(); @SuppressWarnings("unchecked") Collection<Writer>[][] createWriters(final List<String> tags, final Level minimumLevel, final boolean writingThread); Level calculateMinimumLevel(final Level globalLevel, final Map<String, Level> customLevels); @SuppressWarnings("unchecked") Collection<LogEntryValue>[][] calculateRequiredLogEntryValues(final Collection<Writer>[][] writers); BitSet calculateFullStackTraceRequirements(final Collection<LogEntryValue>[][] logEntryValues); WritingThread createWritingThread(final Collection<Writer>[][] matrix); static Collection<Writer> getAllWriters(final Collection<Writer>[][] matrix); static LogEntry createLogEntry(final StackTraceElement stackTraceElement, final String tag, 
		final Level level, final Throwable exception, final MessageFormatter formatter, final Object obj,
		final Object[] arguments, final Collection<LogEntryValue>[] requiredLogEntryValues, 
		final TinylogContextProvider contextProvider);  }
@Test public void calcMinimumLevelFromGlobalLevel() { TinylogLoggingConfiguration config = new TinylogLoggingConfiguration(); Level level1 = config.calculateMinimumLevel(Level.INFO, Collections.emptyMap()); assertThat(level1).isEqualTo(Level.INFO); Level level2 = config.calculateMinimumLevel(Level.INFO, Collections.singletonMap("test", Level.TRACE)); assertThat(level2).isEqualTo(Level.TRACE); Level level3 = config.calculateMinimumLevel(Level.INFO, Collections.singletonMap("test", Level.ERROR)); assertThat(level3).isEqualTo(Level.INFO); }