{"record":{"id":"9d2c119acb40681f","repo":"pentaho/pentaho-kettle","slug":"jobentrysyslog-datepatternempty","errorCode":"JobEntrySyslog.DatePatternEmpty","errorMessage":"JobEntrySyslog.DatePatternEmpty","messagePattern":"JobEntrySyslog\\.DatePatternEmpty","errorType":"error_code","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/syslog/JobEntrySyslog.java","lineNumber":289,"sourceCode":"\n    String messageString = environmentSubstitute( getMessage() );\n\n    if ( Utils.isEmpty( messageString ) ) {\n      logError( BaseMessages.getString( PKG, \"JobEntrySyslog.MissingMessage\" ) );\n    }\n\n    int nrPort = Const.toInt( environmentSubstitute( getPort() ), SyslogDefs.DEFAULT_PORT );\n\n    SyslogIF syslog = null;\n    try {\n      String pattern = null;\n\n      if ( isAddTimestamp() ) {\n        // add timestamp to message\n        pattern = environmentSubstitute( getDatePattern() );\n        if ( Utils.isEmpty( pattern ) ) {\n          logError( BaseMessages.getString( PKG, \"JobEntrySyslog.DatePatternEmpty\" ) );\n          throw new KettleException( BaseMessages.getString( PKG, \"JobEntrySyslog.DatePatternEmpty\" ) );\n        }\n\n      }\n\n      // Open syslog connection\n      // Set a Specific Host, then Log to It\n      syslog = Syslog.getInstance( \"udp\" );\n      syslog.getConfig().setHost( servername );\n      syslog.getConfig().setPort( nrPort );\n      syslog.getConfig().setFacility( getFacility() );\n      syslog.getConfig().setSendLocalName( false );\n      syslog.getConfig().setSendLocalTimestamp( false );\n      SyslogDefs.sendMessage(\n        syslog, SyslogDefs.getPriority( getPriority() ), messageString, isAddTimestamp(), pattern,\n        isAddHostName() );\n\n      // message was sent\n      result.setNrErrors( 0 );","sourceCodeStart":271,"sourceCodeEnd":307,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/syslog/JobEntrySyslog.java#L271-L307","documentation":"During JobEntrySyslog.execute, when addTimestamp is enabled the entry builds a SimpleDateFormat from the datePattern field; if that pattern (after environment substitution) is empty, the entry logs and throws this KettleException before opening the syslog connection. The message text is the localized 'JobEntrySyslog.DatePatternEmpty' bundle string.","triggerScenarios":"Running a Syslog job entry with 'Add timestamp' checked but the Date pattern field left blank, or set to a variable like ${DATE_PATTERN} that resolves to empty at runtime.","commonSituations":"Variable defined in a different environment (kettle.properties on a server lacks it); copy-pasted entry between jobs where the pattern was lost; user enabled timestamping but forgot the mandatory pattern field.","solutions":["Set a valid date pattern (e.g. yyyy/MM/dd HH:mm:ss) in the job entry's Date pattern field","If using a variable, define it in kettle.properties, the job's parameter set, or the environment","Uncheck 'Add timestamp' if a timestamp is not needed — the pattern is only required when it is checked","Fix the date pattern syntax with Java SimpleDateFormat letters (yyyy, MM, dd, HH, mm, ss)"],"exampleFix":"// before: addTimestamp=true, datePattern=null -> execute() throws\njobEntry.setAddTimestamp(true);\njobEntry.setDatePattern(null);\n// after\njobEntry.setAddTimestamp(true);\njobEntry.setDatePattern(\"yyyy-MM-dd HH:mm:ss\");","handlingStrategy":"validation","validationCode":"// Java: validate pattern before execute()\nString pattern = jobEntry.environmentSubstitute(jobEntry.getDatePattern());\nif (jobEntry.isAddTimestamp() && (pattern == null || pattern.trim().isEmpty())) {\n  throw new IllegalArgumentException(\"datePattern required when addTimestamp=true\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  jobEntry.execute(result, executionOffset);\n} catch (KettleException e) {\n  if (e.getMessage().contains(\"DatePatternEmpty\")) {\n    logError(\"Set a valid SimpleDateFormat pattern or disable addTimestamp\");\n  }\n}","preventionTips":["Always set a date pattern when enabling 'Add timestamp'","Define variables like ${DATE_PATTERN} in kettle.properties or job parameters","Test date patterns against Java SimpleDateFormat rules","Uncheck addTimestamp when no timestamp is needed"],"tags":["pentaho-kettle","syslog","configuration"],"backgroundTag":"empty-required-field","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}