Fault::Delegate::Syslog - Syslog delegate.


Fault documentation Contained in the Fault distribution.

Index


Code Index:

NAME

Top

 Fault::Delegate::Syslog - Syslog delegate.

SYNOPSIS

Top

 use Fault::Delegate::Syslog;
 $self = Fault::Delegate::Syslog->new;
 $okay = $self->log ($msg);

Inheritance

Top

 UNIVERSAL
   Fault::Delegate
     Fault::Delegate::Syslog

Description

Top

This is a delegate that writes log messages to the syslog. Syslogging must be accessible to the calling program.

Fault::Delegate::Syslog satisfies the minimum requirements of the Fault::Delegate logger delegate protocol.

Examples

Top

 use Fault::Delegate::Syslog;
 use Fault::Msg;
 use Fault::Logger;

 my $msg       = Fault::Msg                   ("Arf!");
 my $baz       = Fault::Delegate::Syslog->new;
 my $waslogged = $baz->log                    ($msg);

                 Fault::Logger->new           ($baz);
 my $waslogged = Fault::Logger->log           ("Bow! Wow!");

 [See Fault::Logger for a detailed example.]

Instance Variables

Top

 init     True if a syslog connection was succesfully initialized.

Class Methods

Top

$delegate = Fault::Delegate::Syslog->new

Create a logger delegate object that writes log messages to syslog. A warning is issued if the program cannot initialize and write a startup message to syslog.

Returns undef if it fails to set up the syslog connection.

Logger Protocol Instance Methods

Top

$didlog = $self->log ($msgobj)

Send the information contained in $msgobj to syslog at the $priority contained by it and return true if we succeeded in doing so. The message is formatted so that it will appear in the log like this:

 Apr 17 18:00:36 localhost UnspecifiedProcess[12638]: NOTE(notice): Testing syslogger again

Private Class Methods

Top

 None.

Private Instance Methods

Top

$bool = $self->_write ($msg)
$bool = $self->_connect

Impliments the above overrides to the internal family protocol utilized by the Fault:Delegate log and test methods.

Errors and Warnings

Top

Local warning messages are issued if the sys logger cannot be reached or has any problems whatever.

KNOWN BUGS

Top

 See TODO.

SEE ALSO

Top

Fault::Logger, Fault::Delegate, Fault::Msg, Sys::Syslog Fault::ErrorHandler

AUTHOR

Top

Dale Amon <amon@vnl.com>


Fault documentation Contained in the Fault distribution.

#================================ Syslog.pm ==================================
# Filename:             Syslog.pm
# Description:          Syslog logger delegate.
# Original Author:      Dale M. Amon
# Revised by:           $Author: amon $ 
# Date:                 $Date: 2008-08-28 23:20:19 $ 
# Version:              $Revision: 1.9 $
# License:		LGPL 2.1, Perl Artistic or BSD
#
#=============================================================================
use strict;
use Sys::Syslog;
use Fault::Delegate;
use Fault::ErrorHandler;
use Fault::Msg;

package Fault::Delegate::Syslog;
use vars qw{@ISA};
@ISA = qw( Fault::Delegate );

#=============================================================================
#                      Family internal methods
#=============================================================================

sub _write ($$) {
    my ($self, $msg) = @_;
    my $m            = $msg->unstamped_log_line;

    if (!Sys::Syslog::syslog ($msg->priority, $m)) {
	($self->warn ("Failed log write: \'$m\' to syslog!")); return 0;}
    return 1;
}

#-----------------------------------------------------------------------------

sub _connect ($) {
    my $self = shift;
    if (!$self->{'init'}) {
	if (!Sys::Syslog::openlog ("", 'cons,ndelay,pid,perror,user','user')) {
	    return 0;
	}
	my $msg = Fault::Msg->new ("Initialized syslog",'INFO','notice');
	$self->{'init'} = 1 if ($self->_write ($msg));
    }
    return 1;
}

#=============================================================================
#		      Logger Delegate Protocol
#=============================================================================
# Utilizes Fault::Delegate parent methods with subclass overrides seen above.

#=============================================================================
#                       Pod Documentation
#=============================================================================
# You may extract and format the documentation section with the 'perldoc' cmd.


#=============================================================================
#                                CVS HISTORY
#=============================================================================
# $Log: Syslog.pm,v $
# Revision 1.9  2008-08-28 23:20:19  amon
# perldoc section regularization.
#
# Revision 1.8  2008-08-17 21:56:37  amon
# Make all titles fit CPAN standard.
#
# Revision 1.7  2008-07-24 21:17:24  amon
# Moved all todo notes to elsewhere; made Stderr the default delegate instead of Stdout.
#
# Revision 1.6  2008-05-09 18:24:55  amon
# Bugs and changes due to pre-release testing
#
# Revision 1.5  2008-05-07 18:14:55  amon
# Simplification and standardization. Much more is inherited from Fault::Delegate.
#
# Revision 1.4  2008-05-05 19:25:49  amon
# Catch any small changes before implimenting major changes
#
# Revision 1.3  2008-05-04 14:42:02  amon
# Updates to perl doc; dropped subclass new method..
#
# Revision 1.2  2008-05-03 00:56:57  amon
# Changed standard argument ordering.
#
# Revision 1.1.1.1  2008-05-02 16:36:01  amon
# Fault and Log System. Pared off of DMA base lib.
#
# Revision 1.6  2008-04-18 11:34:39  amon
# Wrote logger delegate abstract superclass to simplify the code in all the 
# delegate classes.
#
# Revision 1.5  2008-04-11 22:25:23  amon
# Add blank line after cut.
#
# Revision 1.4  2008-04-11 18:56:35  amon
# Fixed quoting problem with formfeeds.
#
# Revision 1.3  2008-04-11 18:39:15  amon
# Implimented new standard for headers and trailers.
#
# Revision 1.2  2008-04-10 15:01:08  amon
# Added license to headers, removed claim that the documentation section still
# relates to the old doc file.
#
# 20041203      Dale Amon <amon@vnl.com>
#               Modified old Document::LogFile code into
#		a very simple delegate that prints to syslog.
#
1;