David Zurborg

NAME

Log::Radis - Radis is a graylog logging radio through a redis database

VERSION

version 0.003

SYNOPSIS

    # default values shown below
    my $radis = Log::Radis->new(
        server => 'localhost:6379',
        reconnect => 5,
        every => 1,
        queue => 'graylog-radis:queue',
    );

    $radis->log(error => "This is a non-urgent error");

DESCRIPTION

Radis (from Radio and Redis) is a concept of caching GELF messages in a Redis DB. Redis provides a reliable queue via the (B)RPOPLPUSH command. See http://redis.io/commands/rpoplpush for more information about that mechanism.

The implementation of a Radis client is quite simple: just push a GELF message with the LPUSH command onto the queue. A collector fetches the messages from the queue and inserts them into a Graylog2 server, for example.

ATTRIBUTES

server

The Redis DB server we should connect to. Defaults to localhost:6379.

See "server" in Redis for allowed values.

reconnect

Re-try connecting to the Redis DB up to reconnect seconds. 0 disables auto-reconnect.

See "reconnect" in Redis for more information.

every

Re-try connection to the Redis DB every every milliseconds.

See "every" in Redis for more information.

queue

The name of the list, which gelf streams are pushed to. Defaults to graylog-radis:queue.

redis

Set or get the Redis instance. Defaults to an instance of Redis. Any blessed object which implements the method lpush is allowed.

For your own Redis implementation use this attribute in the constructor. That should work:

    my $redis = AnyEvent::Redis->new(...);
    my $radis = Log::Radis->new(redis => $redis);
    my $cv = $radis->log(...);
    $cv->recv;

METHODS

log

    $radis->log($level, $message, %additional_gelf_params);
    $radis->log(alert => "This is an alert!");
    $radis->log(notice => "Look at this.", additional_param => $additional_value);

Additional GELF params must be prefixed with an underscore - but this method does that for you.

Overrides are only allowed for host/hostname and timestamp/time params. They defaults to the system hostname and the current timestamp from "time" in Time::HiRes.

push

    $radis->push({ ... });

Raw-push a gelf message onto queue. If the argument is not a HashRef, it will be encoded to a JSON string.

The input is not validated, so be careful what you push onto the queue.

LOG LEVELS

These levels are known and supposed to be compatible to various other logging engines.

    Identifier | Numeric level
    -----------+--------------
    fatal      | 1
    emerg      | 1
    emergency  | 1
    -----------+---
    alert      | 2
    -----------+---
    crit       | 3
    critical   | 3
    -----------+---
    error      | 4
    err        | 4
    -----------+---
    warn       | 5
    warning    | 5
    -----------+---
    note       | 6
    notice     | 6
    -----------+---
    info       | 7
    -----------+---
    debug      | 8
    -----------+---
    trace      | 9
    core       | 9

BUGS

Please report any bugs or feature requests on the bugtracker website https://github.com/zurborg/liblog-radis-perl/issues

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

AUTHOR

David Zurborg <zurborg@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2016 by David Zurborg.

This is free software, licensed under:

  The ISC License