# Perl

The [`Fluent::Logger`](http://github.com/fluent/fluent-logger-perl) library is used to post records from Perl applications to Fluentd.

This article explains how to use it.

## Prerequisites

* Basic knowledge of Perl
* Basic knowledge of Fluentd
* Perl 5.10 or higher

## Installing Fluentd

Please refer to the following document to install Fluentd:

* [Installation](https://docs.fluentd.org/installation)

## Modifying the Config File

Configure Fluentd to use the [`forward`](https://docs.fluentd.org/input/forward) input plugin as its data source:

```
<source>
  @type forward
  port 24224
</source>
<match fluentd.test.**>
  @type stdout
</match>
```

Restart agent after configuring.

```
# for rpm/deb only
$ sudo /etc/init.d/td-agent restart

# or systemd
$ sudo systemctl restart td-agent.service
```

## Using `Fluent::Logger`

Install [`Fluent::Logger`](http://search.cpan.org/dist/Fluent-Logger/) library via CPAN:

```
$ cpan
cpan[1]> install Fluent::Logger
```

Create a script to post the records:

```
# test.pl
use Fluent::Logger;
my $logger = Fluent::Logger->new(
    host => '127.0.0.1',
    port => 24224,
    tag_prefix => 'fluentd.test',
);
$logger->post("follow", { "entry1" => "value1", "entry2" => 2 });
```

Executing the script will send the logs to Fluentd:

```
$ perl test.pl
```

The logs should be output to `/var/log/td-agent/td-agent.log` or the standard output of the Fluentd process via [`stdout`](https://docs.fluentd.org/output/stdout) output plugin.

## Production Deployments

### Output Plugins

Various [output plugins](https://docs.fluentd.org/output) are available for writing records to other destinations:

* Examples
  * [Store Apache Logs into Amazon S3](https://docs.fluentd.org/how-to-guides/apache-to-s3)
  * [Store Apache Logs into MongoDB](https://docs.fluentd.org/how-to-guides/apache-to-mongodb)
  * [Data Collection into HDFS](https://docs.fluentd.org/how-to-guides/http-to-hdfs)
* List of Plugin References
  * [Output to Another Fluentd](https://docs.fluentd.org/output/forward)
  * [Output to MongoDB](https://docs.fluentd.org/output/mongo) or [MongoDB ReplicaSet](https://docs.fluentd.org/output/mongo_replset)
  * [Output to Hadoop](https://docs.fluentd.org/output/webhdfs)
  * [Output to File](https://docs.fluentd.org/output/file)
  * [etc...](http://fluentd.org/plugin/)

### High-Availability Configurations of Fluentd

For high-traffic websites (more than 5 application nodes), we recommend using the high-availability configuration for `td-agent`. This will improve the reliability of data transfer and query performance.

* [High-Availability Configurations of Fluentd](https://docs.fluentd.org/deployment/high-availability)

### Monitoring

Monitoring Fluentd itself is also important. The article below describes the general monitoring methods for `td-agent`.

* [Monitoring Fluentd](https://docs.fluentd.org/monitoring-fluentd/overview)

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 an 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/language-bindings/perl.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.
