# stdout

The `filter_stdout` filter plugin prints events to stdout (or logs if launched with daemon mode). This filter plugin is useful for debugging purposes.

## Example Configurations

`filter_stdout` is included in Fluentd's core. No installation required.

```
<filter pattern>
  @type stdout
</filter>
```

A sample output is as follows:

```
2015-05-02 12:12:17 +0900 tag: {"field1":"value1","field2":"value2"}
```

where the first part shows the output time, the second part shows the tag, and the third part shows the record. The first part shows the \*\*output\*\* time, not the time attribute of message event structure as \`out\_stdout\` does.

## Parameters

### type (required)

The value must be `stdout`.

### format

The format of the output. The default is `stdout`.

### output\_type

This is the option of `stdout` format. Configure the format of record (third part). Any formatter plugins can be specified. The default is `json`.

### out\_file

Output time, tag and json record separated by a delimiter:

```
time[delimiter]tag[delimiter]record\n
```

Example:

```
2014-06-08T23:59:40[TAB]file.server.logs[TAB]{"field1":"value1","field2":"value2"}\n
```

`out_file` format has several options to customize the format.

```
delimiter SPACE   # Optional, SPACE or COMMA. "\t"(TAB) is used by default
output_tag false  # Optional, defaults to true. Output the tag field if true.
output_time true  # Optional, defaults to true. Output the time field if true.
```

For this format, the following common parameters are also supported.

* **include\_time\_key** (Boolean, Optional, defaults to false) If

  true, the time field (as specified by the `time_key` parameter) is

  kept in the record.
* **time\_key** (String, Optional, defaults to "time") The field name

  for the time key.
* **time\_format** (String. Optional) By default, the output format is

  iso8601 (e.g. "2008-02-01T21:41:49"). One can specify their own

  format with this parameter.
* **include\_tag\_key** (Boolean. Optional, defaults to false) If

  true, the tag field (as specified by the `tag_key` parameter) is

  kept in the record.
* **tag\_key** (String, Optional, defaults to "tag") The field name

  for the tag key.
* **localtime** (Boolean. Optional, defaults to true) If true, use

  local time. Otherwise, UTC is used. This parameter is overwritten by

  the `utc` parameter.
* **timezone** (String. Optional) By setting this parameter, one can parse the time value in the specified timezone. The following formats are accepted:

  1. \[+-]HH:MM (e.g. "+09:00")
  2. \[+-]HHMM (e.g. "+0900")
  3. \[+-]HH (e.g. "+09")
  4. Region/Zone (e.g. "Asia/Tokyo")
  5. Region/Zone/Zone (e.g. "America/Argentina/Buenos\_Aires")

  **The timezone set in this parameter takes precedence over `localtime`**, e.g., if `localtime` is set to `true` but `timezone` is set to `+0000`, UTC would be used.

### json

Output a json record without the time or tag field:

```
{"field1":"value1","field2":"value2"}\n
```

For this format, the following common parameters are also supported.

* **include\_time\_key** (Boolean, Optional, defaults to false) If

  true, the time field (as specified by the `time_key` parameter) is

  kept in the record.
* **time\_key** (String, Optional, defaults to "time") The field name

  for the time key.
* **time\_format** (String. Optional) By default, the output format is

  iso8601 (e.g. "2008-02-01T21:41:49"). One can specify their own

  format with this parameter.
* **include\_tag\_key** (Boolean. Optional, defaults to false) If

  true, the tag field (as specified by the `tag_key` parameter) is

  kept in the record.
* **tag\_key** (String, Optional, defaults to "tag") The field name

  for the tag key.
* **localtime** (Boolean. Optional, defaults to true) If true, use

  local time. Otherwise, UTC is used. This parameter is overwritten by

  the `utc` parameter.
* **timezone** (String. Optional) By setting this parameter, one can parse the time value in the specified timezone. The following formats are accepted:

  1. \[+-]HH:MM (e.g. "+09:00")
  2. \[+-]HHMM (e.g. "+0900")
  3. \[+-]HH (e.g. "+09")
  4. Region/Zone (e.g. "Asia/Tokyo")
  5. Region/Zone/Zone (e.g. "America/Argentina/Buenos\_Aires")

  **The timezone set in this parameter takes precedence over `localtime`**, e.g., if `localtime` is set to `true` but `timezone` is set to `+0000`, UTC would be used.

### hash

Output a record as ruby hash without the time or tag field:

```
{"field1"=>"value1","field2"=>"value2"}\n
```

For this format, the following common parameters are also supported.

* **include\_time\_key** (Boolean, Optional, defaults to false) If

  true, the time field (as specified by the `time_key` parameter) is

  kept in the record.
* **time\_key** (String, Optional, defaults to "time") The field name

  for the time key.
* **time\_format** (String. Optional) By default, the output format is

  iso8601 (e.g. "2008-02-01T21:41:49"). One can specify their own

  format with this parameter.
* **include\_tag\_key** (Boolean. Optional, defaults to false) If

  true, the tag field (as specified by the `tag_key` parameter) is

  kept in the record.
* **tag\_key** (String, Optional, defaults to "tag") The field name

  for the tag key.
* **localtime** (Boolean. Optional, defaults to true) If true, use

  local time. Otherwise, UTC is used. This parameter is overwritten by

  the `utc` parameter.
* **timezone** (String. Optional) By setting this parameter, one can parse the time value in the specified timezone. The following formats are accepted:

  1. \[+-]HH:MM (e.g. "+09:00")
  2. \[+-]HHMM (e.g. "+0900")
  3. \[+-]HH (e.g. "+09")
  4. Region/Zone (e.g. "Asia/Tokyo")
  5. Region/Zone/Zone (e.g. "America/Argentina/Buenos\_Aires")

  **The timezone set in this parameter takes precedence over `localtime`**, e.g., if `localtime` is set to `true` but `timezone` is set to `+0000`, UTC would be used.

### ltsv

Output the record as [LTSV](http://ltsv.org):

```
field1[label_delimiter]value1[delimiter]field2[label_delimiter]value2\n
```

`ltsv` format supports `delimiter` and `label_delimiter` options.

```
format ltsv
delimiter SPACE   # Optional. "\t"(TAB) is used by default
label_delimiter = # Optional. ":" is used by default
```

For this format, the following common parameters are also supported.

* **include\_time\_key** (Boolean, Optional, defaults to false) If

  true, the time field (as specified by the `time_key` parameter) is

  kept in the record.
* **time\_key** (String, Optional, defaults to "time") The field name

  for the time key.
* **time\_format** (String. Optional) By default, the output format is

  iso8601 (e.g. "2008-02-01T21:41:49"). One can specify their own

  format with this parameter.
* **include\_tag\_key** (Boolean. Optional, defaults to false) If

  true, the tag field (as specified by the `tag_key` parameter) is

  kept in the record.
* **tag\_key** (String, Optional, defaults to "tag") The field name

  for the tag key.
* **localtime** (Boolean. Optional, defaults to true) If true, use

  local time. Otherwise, UTC is used. This parameter is overwritten by

  the `utc` parameter.
* **timezone** (String. Optional) By setting this parameter, one can parse the time value in the specified timezone. The following formats are accepted:

  1. \[+-]HH:MM (e.g. "+09:00")
  2. \[+-]HHMM (e.g. "+0900")
  3. \[+-]HH (e.g. "+09")
  4. Region/Zone (e.g. "Asia/Tokyo")
  5. Region/Zone/Zone (e.g. "America/Argentina/Buenos\_Aires")

  **The timezone set in this parameter takes precedence over `localtime`**, e.g., if `localtime` is set to `true` but `timezone` is set to `+0000`, UTC would be used.

### single\_value

Output the value of a single field instead of the whole record. Often used in conjunction with [in\_tail](/0.12/input/tail.md)'s `format none`.

```
value1\n
```

`single_value` format supports the `add_newline` and `message_key` options.

```
add_newline false # Optional, defaults to true. If there is a trailing "\n" already, set it "false"
message_key my_field # Optional, defaults to "message". The value of this field is outputted.
```

### csv

Output the record as CSV/TSV:

```
"value1"[delimiter]"value2"[delimiter]"value3"\n
```

`csv` format supports the `delimiter` and `force_quotes` options.

```
format csv
fields field1,field2,field3
delimiter \t   # Optional. "," is used by default.
force_quotes false # Optional. true is used by default. If false, value won't be framed by quotes.
```

For this format, the following common parameters are also supported.

* **include\_time\_key** (Boolean, Optional, defaults to false) If

  true, the time field (as specified by the `time_key` parameter) is

  kept in the record.
* **time\_key** (String, Optional, defaults to "time") The field name

  for the time key.
* **time\_format** (String. Optional) By default, the output format is

  iso8601 (e.g. "2008-02-01T21:41:49"). One can specify their own

  format with this parameter.
* **include\_tag\_key** (Boolean. Optional, defaults to false) If

  true, the tag field (as specified by the `tag_key` parameter) is

  kept in the record.
* **tag\_key** (String, Optional, defaults to "tag") The field name

  for the tag key.
* **localtime** (Boolean. Optional, defaults to true) If true, use

  local time. Otherwise, UTC is used. This parameter is overwritten by

  the `utc` parameter.
* **timezone** (String. Optional) By setting this parameter, one can parse the time value in the specified timezone. The following formats are accepted:

  1. \[+-]HH:MM (e.g. "+09:00")
  2. \[+-]HHMM (e.g. "+0900")
  3. \[+-]HH (e.g. "+09")
  4. Region/Zone (e.g. "Asia/Tokyo")
  5. Region/Zone/Zone (e.g. "America/Argentina/Buenos\_Aires")

  **The timezone set in this parameter takes precedence over `localtime`**, e.g., if `localtime` is set to `true` but `timezone` is set to `+0000`, UTC would be used.

### stdout

This format is aimed to be used by stdout plugins.

Output time, tag and formatted record as follows:

```
time tag: formatted_record\n
```

Example:

```
2015-05-02 12:12:17 +0900 tag: {"field1":"value1","field2":"value2"}\n
```

`stdout` format has a following option to customize the format of the record part.

```
output_type format # Optional, defaults to "json". The format of
`formatted_record`. Any formatter plugins can be specified.
```

For this format, the following common parameters are also supported.

* **include\_time\_key** (Boolean, Optional, defaults to false) If

  true, the time field (as specified by the `time_key` parameter) is

  kept in the record.
* **time\_key** (String, Optional, defaults to "time") The field name

  for the time key.
* **time\_format** (String. Optional) By default, the output format is

  iso8601 (e.g. "2008-02-01T21:41:49"). One can specify their own

  format with this parameter.
* **include\_tag\_key** (Boolean. Optional, defaults to false) If

  true, the tag field (as specified by the `tag_key` parameter) is

  kept in the record.
* **tag\_key** (String, Optional, defaults to "tag") The field name

  for the tag key.
* **localtime** (Boolean. Optional, defaults to true) If true, use

  local time. Otherwise, UTC is used. This parameter is overwritten by

  the `utc` parameter.
* **timezone** (String. Optional) By setting this parameter, one can parse the time value in the specified timezone. The following formats are accepted:

  1. \[+-]HH:MM (e.g. "+09:00")
  2. \[+-]HHMM (e.g. "+0900")
  3. \[+-]HH (e.g. "+09")
  4. Region/Zone (e.g. "Asia/Tokyo")
  5. Region/Zone/Zone (e.g. "America/Argentina/Buenos\_Aires")

  **The timezone set in this parameter takes precedence over `localtime`**, e.g., if `localtime` is set to `true` but `timezone` is set to `+0000`, UTC would be used.

### log\_level option

The `log_level` option allows the user to set different levels of logging for each plugin. The supported log levels are: `fatal`, `error`, `warn`, `info`, `debug`, and `trace`.

Please see the [logging article](/0.12/deployment/logging.md) for further details.

## Learn More

* [Filter Plugin Overview](/0.12/filter.md)

If this article is incorrect or outdated, or omits critical information, please [let us know](https://github.com/fluent/fluentd-docs-gitbook/issues?state=open). [Fluentd](http://www.fluentd.org/) is a open source project under [Cloud Native Computing Foundation (CNCF)](https://cncf.io/). All components are available under the Apache 2 License.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fluentd.org/0.12/filter/stdout.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
