/** * Expects a map keyed by logger {@code Name}s with values representing {@code Level}s. The * {@code Name} generally represents the fully qualified Java {@link Class#getName() class * name}, or fully qualified Java {@link Package#getName() package name}, or custom logger name. * The {@code Level} represents the log level and must be one of {@link Level}. */ @JsonCreator public static WorkerLogLevelOverrides from(Map<String, String> values) { checkNotNull(values, "Expected values to be not null."); WorkerLogLevelOverrides overrides = new WorkerLogLevelOverrides(); for (Map.Entry<String, String> entry : values.entrySet()) { try { overrides.addOverrideForName(entry.getKey(), Level.valueOf(entry.getValue())); } catch (IllegalArgumentException e) { throw new IllegalArgumentException( String.format( "Unsupported log level '%s' requested for %s. Must be one of %s.", entry.getValue(), entry.getKey(), Arrays.toString(Level.values()))); } } return overrides; } }
/** * Overrides the default log level for the passed in name. * * <p>Note that because of the hierarchical nature of logger names, this will override the log * level of all loggers that have the passed in name or a parent logger that has the passed in * name. */ public WorkerLogLevelOverrides addOverrideForName(String name, Level level) { checkNotNull(name, "Expected name to be not null."); checkNotNull(level, "Expected level to be one of %s.", Arrays.toString(Level.values())); put(name, level); return this; }