pentaho/pentaho-kettle · error · SyslogException

JobEntrySyslog.UnknownPriotity

Error message

JobEntrySyslog.UnknownPriotity

What it means

SyslogDefs.getPriority looks up the priority string in the static priHash map of valid syslog priorities (e.g. emerg, alert, crit, err, warning, notice, info, debug). An unknown key yields null and a SyslogException with the localized 'JobEntrySyslog.UnknownPriotity' message including the offending value.

Solutions

  1. Use an exact key from SyslogDefs.priHash: emerg, alert, crit, err, warning, notice, info, debug (lowercase)
  2. If priority comes from a variable, verify it resolves to one of those exact lowercase names
  3. Log/print environmentSubstitute(getPriority()) before execution to see the actual value
  4. Normalize input: value = value.toLowerCase().trim() before passing to the entry

Example fix

// before: throws SyslogException
jobEntry.setPriority("Critical");
// after
jobEntry.setPriority("crit"); // exact lowercase key from SyslogDefs.priHash
Defensive patterns

Strategy: validation

Validate before calling

// Java: whitelist-check priority against SyslogDefs keys before execute
java.util.Set<String> valid = new java.util.HashSet<>(java.util.Arrays.asList(
  "emerg","alert","crit","err","warning","notice","info","debug"));
String p = jobEntry.environmentSubstitute(jobEntry.getPriority());
if (p == null || !valid.contains(p.trim().toLowerCase())) {
  throw new IllegalArgumentException("Unknown syslog priority: " + p);
}

Try / catch

try {
  jobEntry.execute(result, executionOffset);
} catch (SyslogException e) {
  if (e.getMessage().contains("UnknownPriotity")) {
    logError("Fix priority to one of: emerg..debug (lowercase)");
  }
}

Prevention

When it happens

Trigger: JobEntrySyslog.execute calls SyslogDefs.getPriority(priority) with a priority string that is not a key of priHash — typically a misspelled priority or one set via a variable that resolved to garbage.

Common situations: Typo like 'Warnings' or 'critical' (case differs: map keys are lowercase); variable ${PRIORITY} unresolved or set to a numeric severity (0-7) instead of the symbolic name; locale-translated label pasted from a non-English UI.

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


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/4b2a8bba5b6660dd. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/syslog/SyslogDefs.java:92

    priHash.put( "EMERGENCY", SyslogConstants.LEVEL_EMERGENCY );
    priHash.put( "ALERT", SyslogConstants.LEVEL_ALERT );
    priHash.put( "CRITICAL", SyslogConstants.LEVEL_CRITICAL );
    priHash.put( "ERROR", SyslogConstants.LEVEL_ERROR );
    priHash.put( "WARNING", SyslogConstants.LEVEL_WARN );
    priHash.put( "NOTICE", SyslogConstants.LEVEL_NOTICE );
    priHash.put( "INFO", SyslogConstants.LEVEL_INFO );
    priHash.put( "DEBUG", SyslogConstants.LEVEL_DEBUG );
  }

  public static int computeCode( int facility, int priority ) {
    return ( ( facility << 3 ) | priority );
  }

  public static int getPriority( String priority ) throws SyslogException {
    Integer result = SyslogDefs.priHash.get( priority );

    if ( result == null ) {
      throw new SyslogException( BaseMessages.getString( PKG, "JobEntrySyslog.UnknownPriotity", priority ) );
    }

    return result.intValue();
  }

  public static int getFacility( String facility ) throws SyslogException {
    Integer result = SyslogDefs.facHash.get( facility );

    if ( result == null ) {
      throw new SyslogException( BaseMessages.getString( PKG, "JobEntrySyslog.UnknownFacility", facility ) );
    }
    return result.intValue();
  }

  public static void sendMessage( SyslogIF syslog, int priority, String message, boolean addTimestamp,
    String pattern, boolean addHostName ) {

    String messageString = message;

View on GitHub (pinned to f3058517a1)