/** * 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 package. * * <p>This is equivalent to calling {@link #addOverrideForName(String, * DataflowWorkerLoggingOptions.Level)} and passing in the {@link Package#getName() package * name}. */ public WorkerLogLevelOverrides addOverrideForPackage(Package pkg, Level level) { checkNotNull(pkg, "Expected package to be not null."); addOverrideForName(pkg.getName(), level); return this; }
/** * Overrides the default log level for the passed in class. * * <p>This is equivalent to calling {@link #addOverrideForName(String, * DataflowWorkerLoggingOptions.Level)} and passing in the {@link Class#getName() class name}. */ public WorkerLogLevelOverrides addOverrideForClass(Class<?> klass, Level level) { checkNotNull(klass, "Expected class to be not null."); addOverrideForName(klass.getName(), level); return this; }
@Test public void testWorkerLogLevelOverrideForName() throws Exception { assertEquals( "{\"A\":\"WARN\"}", MAPPER.writeValueAsString(new WorkerLogLevelOverrides().addOverrideForName("A", WARN))); }