apache/beam · error · IllegalArgumentException
Unknown log level ${level}. Valid log levels are ${validLeve
Error message
Unknown log level ${level}. Valid log levels are ${validLevels} What it means
LoggingTransformProvider's LoggingReadTransform.Level config maps configured level strings to java.util.logging Levels. getLogLevel throws IllegalArgumentException when getLevel() is non-null but not one of the supported keys (e.g. 'INFO', 'WARNING', 'SEVERE'), listing the valid levels in the message.
Source
Thrown at sdks/java/core/src/main/java/org/apache/beam/sdk/schemas/transforms/providers/LoggingTransformProvider.java:105
return Collections.singletonList(OUTPUT_ROWS_TAG);
}
@DefaultSchema(AutoValueSchema.class)
@AutoValue
public abstract static class Configuration {
private static final Map<String, Level> SUPPORTED_LOG_LEVELS =
ImmutableMap.of("ERROR", Level.ERROR, "INFO", Level.INFO, "DEBUG", Level.DEBUG);
@Nullable
public abstract String getLevel();
public Level getLogLevel() {
if (getLevel() == null) {
return Level.INFO;
} else if (SUPPORTED_LOG_LEVELS.containsKey(getLevel())) {
return SUPPORTED_LOG_LEVELS.get(getLevel());
} else {
throw new IllegalArgumentException(
"Unknown log level "
+ getLevel()
+ ". Valid log levels are "
+ ImmutableList.copyOf(SUPPORTED_LOG_LEVELS.keySet()));
}
}
@Nullable
public abstract String getPrefix();
public String getNonNullPrefix() {
String prefix = getPrefix();
return prefix == null ? "" : prefix;
}
public static Builder builder() {
return new AutoValue_LoggingTransformProvider_Configuration.Builder();
}View on GitHub (pinned to 12126d8942)
Solutions
- Use one of the valid level names listed in the error message (from SUPPORTED_LOG_LEVELS keySet)
- Check the provider docs/SUPPORTED_LOG_LEVELS map for exact accepted strings
- Omit the level entirely to get the default Level.INFO
Example fix
// before level: WARN // after level: WARNING
Defensive patterns
Strategy: validation
Validate before calling
Set<String> valid = Set.of("INFO","WARNING","SEVERE","CONFIG","FINE","FINER","FINEST","OFF","ALL");
if (level != null && !valid.contains(level)) throw new IllegalArgumentException("Invalid log level: " + level); Prevention
- Use the exact java.util.logging level names the provider documents
- Avoid slf4j/log4j level spellings like WARN/ERROR/DEBUG in this config
When it happens
Trigger: Configuring the logging transform with a level string not present in SUPPORTED_LOG_LEVELS, e.g. 'debug', 'trace', or 'WARN' when only specific keys are supported.
Common situations: Using log4j/slf4j level names ('WARN', 'ERROR', 'DEBUG') instead of the java.util.logging names the provider supports; case/typo mistakes in pipeline YAML.
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- No filesystem found for scheme
- Unsupported log level '%s' requested for %s. Must be one of
- Exploded field %s must be an iterable type, got %s.
- boolean cross product parameter required to explode more tha
- ${config}
AI-assisted analysis of apache/beam@12126d8942 (2026-09-13).
Data as JSON: /api/errors/c44035596234cd8d.
Report an issue: GitHub.