copy

The copy output plugin copies events to multiple outputs.
It is included in Fluentd's core.
Example Configuration
<match pattern>
@type copy
<store>
@type file
path /var/log/fluent/myapp1
...
</store>
<store>
...
</store>
<store>
...
</store>
</match>
Please see the Configuration File article for the basic structure and syntax of the configuration file.
Here is an example set up to send events to both a local file under /var/log/fluent/myapp and the collection fluentd.test to an Elasticsearch instance (See out_file and out_elasticsearch):
<match myevent.file_and_elasticsearch>
@type copy
<store>
@type file
path /var/log/fluent/myapp
compress gzip
<format>
localtime false
</format>
<buffer time>
timekey_wait 10m
timekey 86400
timekey_use_utc true
path /var/log/fluent/myapp
</buffer>
<inject>
time_format %Y%m%dT%H%M%S%z
localtime false
</inject>
</store>
<store>
@type elasticsearch
host fluentd
port 9200
index_name fluentd
type_name fluentd
</store>
</match>
Plugin Helpers
Parameters
@type
The value must be copy.
copy_mode
| type | default | available | version |
|---|---|---|---|
| enum | no_copy | no_copy, shallow, deep, marshal | 1.8.1 |
Chooses how to pass the events to <store> plugins.
Supported modes:
no_copy(default)Share events between
storeplugins.shallowPass shallow copied events to each
storeplugin. This mode uses Ruby'sdupmethod. This mode is useful when you do not modify the nested fields afterout_copy, e.g. remove top-level fields.deepPass deep copied events to each
storeplugin. This mode usesmsgpack-rubyinternally. This mode is useful when you modify the nested field afterout_copy, e.g. Kubernetes related fields.marshalPass deep copied events to each
storeplugin. This mode uses Ruby'smarshalinternally. This mode is useful whenmsgpack-rubycannot process your events. This mode is very slow.
deep_copy
| type | default | version |
|---|---|---|
| bool | false | 0.14.0 |
This parameter is deprecated since v1.8.1. Use copy_mode instead.
out_copy shares a record between store plugins by default.
If true, out_copy passes dupped record to each store plugin. This behavior is similar to copy_mode shallow.
<store> Section
Specifies the storage destinations. The format is the same as the <match> directive.
This section is required at least once.
ignore_error argument
If one store raises an error, it affects other <store>. For example:
<match app.**>
@type copy
<store>
@type plugin1
</store>
<store>
@type plugin2
</store>
</match>
If plugin1's emit/format raises an error, plugin2 is not executed. If you want to ignore an error from a less important <store>, you can specify ignore_error in <store>:
<match app.**>
@type copy
<store ignore_error>
@type plugin1
</store>
<store>
@type plugin2
</store>
</match>
ignore_if_prev_success argument
Since Fluentd v1.12.2, you can use ignore_if_prev_success to define fallback outputs. For example:
<match app.**>
@type copy
<store ignore_error>
@type plugin1
name c0
</store>
<store ignore_if_prev_success ignore_error>
@type plugin2
name c1
</store>
</match>
Fluentd will make use of plugin2 only if the preceding destinations (plugin1 in this case) fail.