Log::Dispatch::DesktopNotification - Send log messages to a desktop notification system


Log-Dispatch-DesktopNotification documentation Contained in the Log-Dispatch-DesktopNotification distribution.

Index


Code Index:

NAME

Top

Log::Dispatch::DesktopNotification - Send log messages to a desktop notification system

SYNOPSIS

Top

    my $notify = Log::Dispatch::DesktopNotification->new(
        name      => 'notify',
        min_level => 'debug',
        app_name  => 'MyApp',
    );

METHODS

Top

new

Creates a new Log::Dispatch output that can be used to graphically notify a user on this system. Uses output_class and calls new on the returned class, passing along all arguments.

output_class

Returns the name of a Log::Dispatch::Output class that's suitable to graphically notify a user on the current system.

On MacOS X that'll be Log::Dispatch::MacGrowl. On other systems Log::Dispatch::Gtk2::Notify will be returned if it's available and usable. Otherwise Log::Dispatch::Null will be returned.

BUGS

Top

Currently only supports Mac OS X and systems on which notification-daemon is available (most *N*Xes).

SEE ALSO

Top

Log::Dispatch, Log::Dispatch::Gtk2::Notify, Log::Dispatch::MacGrowl, Log::Dispatch::Null

AUTHOR

Top

Florian Ragwitz <rafl@debian.org>

COPYRIGHT AND LICENSE

Top


Log-Dispatch-DesktopNotification documentation Contained in the Log-Dispatch-DesktopNotification distribution.
use strict;
use warnings;

package Log::Dispatch::DesktopNotification;

use Module::Load qw/load/;
use Module::Load::Conditional qw/can_load/;
use namespace::clean;

our $VERSION = '0.01';

sub new {
    my ($class, @args) = @_;
    return $class->output_class->new(@args);
}

sub output_class {
    if ($^O eq 'darwin') {
        my $mod = 'Log::Dispatch::MacGrowl';
        load $mod; return $mod;
    }

    if (can_load(modules => { Gtk2 => undef }) && Gtk2->init_check) {
        my $mod = 'Log::Dispatch::Gtk2::Notify';
        return $mod if can_load(modules => { $mod => undef });
    }

    my $mod = 'Log::Dispatch::Null';
    load $mod; return $mod;
}

1;