protected void setFrequency(final String frequency) {
        if (frequency == null || frequency.isBlank()) {
            this.frequencyTrigger = null;
        } else {
            try {
                this.frequencyTrigger = new FrequencyTrigger(frequency);
            } catch (final NumberFormatException e) {
                throw new PipelineFactoryException("Incorrect value for frequency: " + frequency);
            }
        }
    }
Child classes will have their own schemes for generating a key.

@return The key to refer to the appender.
@throws IOException If anything goes wrong during key construction, it can call out to external property services
stroom-pipeline/src/main/java/stroom/pipeline/writer/AbstractRollingAppender.java