fluent/fluentd · error · Fluent::ConfigError
Parameter '#{name}: #{string}' doesn't have timestamp placeh
Error message
Parameter '#{name}: #{string}' doesn't have timestamp placeholders for timekey #{timekey.to_i} What it means
A path/format-style parameter contains no strftime time directives at all, while the buffer chunks records by time (`time` chunk key with a `timekey`). If all time-keyed chunks expand to the same literal value, chunks overwrite each other or become indistinguishable, so the placeholder validator (`validate_time!`, `!sec && timekey`) rejects it at configure time.
Source
Thrown at lib/fluent/plugin/output.rb:733
def keys?
@type == :keys
end
def validate!
case @type
when :time then validate_time!
when :tag then validate_tag!
when :keys then validate_keys!
end
end
def validate_time!
sec = @argument[:sec]
title = @argument[:title]
example = @argument[:example]
timekey = @argument[:timekey]
if !sec && timekey
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' doesn't have timestamp placeholders for timekey #{timekey.to_i}"
end
if sec && !timekey
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' has timestamp placeholders, but chunk key 'time' is not configured"
end
if sec && timekey && timekey < sec
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' doesn't have timestamp placeholder for #{title}('#{example}') for timekey #{timekey.to_i}"
end
end
def validate_tag!
parts = @argument[:parts]
tagkey = @argument[:tagkey]
if tagkey && parts.empty?
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' doesn't have tag placeholder"
end
if !tagkey && !parts.empty?
raise Fluent::ConfigError, "Parameter '#{name}: #{string}' has tag placeholders, but chunk key 'tag' is not configured"
endView on GitHub (pinned to dd45c6e18d)
Solutions
- Add time directives that vary at least as fast as the timekey, e.g. `path /logs/app.%Y%m%d%H.log`
- Or remove `time` from the chunk keys if per-time rotation is not wanted
- Match directive granularity to timekey: minute key → include %M, hour key → include %H
Example fix
# before <buffer time> timekey 1h </buffer> path /logs/app.log # after <buffer time> timekey 1h </buffer> path /logs/app.%Y%m%d%H.log
Defensive patterns
Strategy: validation
Validate before calling
fluentd --dry-run -c /etc/fluent/fluent.conf # lint: if buffer chunk keys include 'time', the path must contain a % time directive
Prevention
- Treat timekey and path time directives as one unit — change them together
- Match granularity: 1m timekey needs %Y%m%d%H%M in the path
- Add a config-lint step that pairs <buffer time> with strftime patterns
When it happens
Trigger: `path /logs/app.log` (no `%Y`/`%m`/`%H`...) together with `<buffer time>` and `timekey 1h` in a file/s3 output; any parameter passed through `placeholder_validate!(name, str)` with time chunking enabled but zero time placeholders in the string.
Common situations: Adding `time` to chunk keys for rotation but forgetting to add time patterns to `path`; switching `path` to a fixed filename during debugging and leaving the time chunk key in place.
Related errors
- Parameter '#{name}: #{string}' has timestamp placeholders, b
- Parameter '#{name}: #{string}' doesn't have timestamp placeh
- Parameter '#{name}: #{string}' doesn't have tag placeholder
- Parameter '#{name}: #{string}' has tag placeholders, but chu
- Parameter '#{name}: #{string}' doesn't have enough placehold
AI-assisted analysis of fluent/fluentd@dd45c6e18d (2026-08-21).
Data as JSON: /api/errors/88f3d68673412788.
Report an issue: GitHub.