NAME

Dancer2::Logger::Fluent - Dancer2 logger engine for Fluent::Logger

VERSION

version 0.05

SYNOPSIS

  use Dancer2::Logger::Fluent;

DESCRIPTION

Implements a structured event logger for Fluent via Fluent::Logger.

When a connection to the fluentd agent can't be established, messages are "queued" internally. These messages will be flushed upon subsequent calls to log(), as soon as a connection is established.

METHODS

log($level, $message)

Writes the log message to Fluent.

CONFIGURATION

The setting logger should be set to Fluent in order to use this logging engine in a Dancer2 application.

Below is a simple sample configuration:

  logger: "Fluent"

  engines:
    logger:
      Fluent:
        tag_prefix: "myapp"
        host: "127.0.0.1"
        port: 24224

The full list of allowed options are as follows:

tag_prefix

Tag prepended to every message, defaults to the configured appname or, if not defined, to the executable's basename.

host

Host running the fluentd agent, defaults to '127.0.0.1'.

port

Port listened by the fluentd agent, defaults to 24224.

timeout

Timeout in seconds, defaults to 3.0 as implemented in Fluent::Logger.

socket

Socket file location, defaults to undef as implemented in Fluent::Logger.

prefer_integer

Whether integer is preferred as cascaded to Data::MessagePack->prefer_integer. Defaults to 1.

event_time

Whether event timestamps (includes nanoseconds as supported by fluentd >= 0.14.0) will be included. Defaults to 0.

buffer_limit

Buffer size limit, defaults to 8388608 (8MB) as implemented in Fluent::Logger.

buffer_overflow_handler

Custom coderef to handle buffer overflow in the event of connection failure, to mitigate loss of data in the event of connection failure.

truncate_buffer_at_overflow

When truncate_buffer_at_overflow is true and pending buffer size is larger than buffer_limit, pending buffer will still be kept but last message will not be sent and will not be appended to the buffer. Defaults to 0.

MESSAGE FORMAT

Messages to fluentd will be a hash containing the following:

  {
    env       => $environment,
    timestamp => $current_timestamp,
    host      => $hostname,
    level     => $level,
    message   => $message,
    pid       => $$
  }

AUTHOR

Arnold Tan Casis <atancasis@cpan.org>

COPYRIGHT

Copyright 2017- Arnold Tan Casis

LICENSE

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

See Dancer2 for details about logging in route handlers.

See http://fluent.github.com for details on fluentd itself.