Log::Dispatch is a suite of OO modules for logging messages to multiple

outputs, each of which can have a minimum and maximum log level.  It is
designed to be easily subclassed, both for creating a new dispatcher
object and particularly for creating new outputs.

PR:	ports/27412
This commit is contained in:
Josef Karthauser 2001-05-19 22:32:07 +00:00
parent 904d0574c1
commit 311c065e90
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=42767
9 changed files with 382 additions and 0 deletions

View file

@ -315,6 +315,7 @@
SUBDIR += p5-Locale-PGetText
SUBDIR += p5-Locale-gettext
SUBDIR += p5-LockFile-Simple
SUBDIR += p5-Log-Dispatch
SUBDIR += p5-Mac-FileSpec-Unixish
SUBDIR += p5-Make
SUBDIR += p5-OLE-Storage_Lite

View file

@ -0,0 +1,48 @@
# New ports collection makefile for: devel/p5-Log-Dispatch
# Date created: 17 May 2001
# Whom: Anton Berezin <tobez@tobez.org>
#
# $FreeBSD$
#
PORTNAME= Log-Dispatch
PORTVERSION= 1.79
CATEGORIES= devel perl5
MASTER_SITES= ${MASTER_SITE_PERL_CPAN}
MASTER_SITE_SUBDIR= Log
PKGNAMEPREFIX= p5-
MAINTAINER= tobez@tobez.org
RUN_DEPENDS= ${BUILD_DEPENDS}
PERL_CONFIGURE= yes
MAN3= Log::Dispatch.3 \
Log::Dispatch::ApacheLog.3 \
Log::Dispatch::Base.3 \
Log::Dispatch::Email.3 \
Log::Dispatch::Email::MIMELite.3 \
Log::Dispatch::Email::MailSend.3 \
Log::Dispatch::Email::MailSendmail.3 \
Log::Dispatch::File.3 \
Log::Dispatch::Handle.3 \
Log::Dispatch::Output.3 \
Log::Dispatch::Screen.3 \
Log::Dispatch::Syslog.3
MANPREFIX= ${PREFIX}/lib/perl5/${PERL_VERSION}
SCRIPTS_ENV+= WRKDIRPREFIX="${WRKDIRPREFIX}" \
REALCURDIR="${.CURDIR}"
pre-fetch:
@${SETENV} ${SCRIPTS_ENV} ${PERL} ${SCRIPTDIR}/configure.pl
post-clean:
@${RM} -f ${WRKDIRPREFIX}${.CURDIR}/Makefile.inc
.if exists(${WRKDIRPREFIX}${.CURDIR}/Makefile.inc)
.include "${WRKDIRPREFIX}${.CURDIR}/Makefile.inc"
.endif
.include <bsd.port.mk>

View file

@ -0,0 +1 @@
MD5 (Log-Dispatch-1.79.tar.gz) = 454da144672bd6b0fb24a12b17830991

View file

@ -0,0 +1,20 @@
--- Dispatch/Syslog.pm.orig Thu May 17 16:23:51 2001
+++ Dispatch/Syslog.pm Thu May 17 16:24:15 2001
@@ -45,7 +45,7 @@
$self->{ident} = $params{ident} || $0;
$self->{logopt} = $params{logopt} || '';
$self->{facility} = $params{facility} || 'user';
- $self->{socket} = $params{socket} || 'unix';
+ $self->{socket} = $params{socket} || undef;
$self->{priorities} = [ 'DEBUG',
'INFO',
@@ -56,7 +56,7 @@
'ALERT',
'EMERG' ];
- Sys::Syslog::setlogsock $self->{socket};
+ Sys::Syslog::setlogsock $self->{socket} if defined $self->{socket};
}
sub log_message

View file

@ -0,0 +1,107 @@
--- Makefile.PL.orig Thu May 17 18:13:04 2001
+++ Makefile.PL Thu May 17 18:13:22 2001
@@ -6,104 +6,8 @@
require 5.005;
}
-{
- unless (-d './Install')
- {
- mkdir './Install', 0755
- or die "can't make dir ./Install: $!";
- }
-
- my %config;
- $config{email_address} = prompt( q[
-To do a full test of the Log::Dispatch::* modules, we need
-to attempt to send an email. If you want these tests to
-be done please supply an address.
-Address?] );
-
- $config{syslog} = prompt( q[
-Do you want to test Log::Dispatch::Syslog by sending a message as
-daemon.notice?
-Yes/No?], 'No' );
-
- delete $config{syslog} if $config{syslog} !~ /^y(?:es)?/i;
-
- if ($config{syslog})
- {
- my $default;
- foreach ( qw( /var/adm/messages
- /var/adm/syslog
- /var/log/messages
- /var/log/syslog
- /var/log/syslog
- /etc/log/syslog ) )
- {
- if (-e)
- {
- $default = $_;
- last;
- }
- }
-
- $config{syslog_file} = prompt('What file would a message sent as daemon.notice end up in?', $default);
-
- unless (-r $config{syslog_file})
- {
- warn "$config{syslog_file} is not readable. Syslog tests will be skipped\n";
- delete $config{syslog};
- delete $config{syslog_file};
- }
- }
-
- open CFG, ">./Install/TestConfig.pm"
- or die "can't write to ./Install/TestConfig.pm: $!";
-
- print CFG <<"EOF";
-#
-# This file was automatically generated by Makefile.PL. Do not
-# edit, instead do a "make realclean" in the toplevel directory and
-# rerun "perl makefile.PL".
-#
-
-package Install::TestConfig;
-EOF
-
- print CFG "\%config = \n(\n";
- foreach (keys %config)
- {
- print CFG "\t$_ => '$config{$_}',\n";
- }
- print CFG ');';
- close CFG;
-}
my %extra_pms;
-{
- print <<'EOF';
-
-Please list any extra modules you would like added as part of this
-installation. These should be located somewhere under the Dispatch/
-directory. Please type the path after Dispatch/ (including the .pm
-extension).
-
-Press enter a blank line when you are done.
-
-EOF
-
- while (1)
- {
- chomp (my $module = <STDIN>);
- last unless $module;
-
- if (-e "./Dispatch/$module")
- {
- $extra_pms{"Dispatch/$module"} = '$(INST_LIBDIR)/Dispatch/' . $module;
- }
- else
- {
- warn "Couldn't find ./Dispatch/$module\n";
- }
- }
-}

View file

@ -0,0 +1 @@
A suite of OO modules for logging messages to multiple outputs

View file

@ -0,0 +1,14 @@
Log::Dispatch is a suite of OO modules for logging messages to multiple
outputs, each of which can have a minimum and maximum log level. It is
designed to be easily subclassed, both for creating a new dispatcher
object and particularly for creating new outputs.
It also allows both global (dispatcher level) and local (logging object)
message formatting callbacks which allows greater flexibility and should
reduce the need for subclassing.
Subclassing is only needed to send a message to a different output, not
to change the message format.
-Anton
<tobez@tobez.org>

View file

@ -0,0 +1,18 @@
lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/Log/Dispatch/.packlist
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/ApacheLog.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Base.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Email.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Email/MIMELite.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Email/MailSend.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Email/MailSendmail.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/File.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Handle.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Output.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Screen.pm
lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Syslog.pm
@dirrm lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch/Email
@unexec rmdir %D/lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/Log/Dispatch 2>/dev/null || true
@unexec rmdir %D/lib/perl5/site_perl/%%PERL_VER%%/%%PERL_ARCH%%/auto/Log 2>/dev/null || true
@unexec rmdir %D/lib/perl5/site_perl/%%PERL_VER%%/Log/Dispatch 2>/dev/null || true
@unexec rmdir %D/lib/perl5/site_perl/%%PERL_VER%%/Log 2>/dev/null || true

View file

@ -0,0 +1,172 @@
#! /usr/bin/perl -w
use strict;
unless (defined $ENV{WRKDIRPREFIX} and
defined $ENV{REALCURDIR} and
defined $ENV{LOCALBASE})
{
die "this script should not be run like that!\n";
}
my $batch = $ENV{BATCH} || 0;
my $makedir = "$ENV{WRKDIRPREFIX}$ENV{REALCURDIR}";
my $makefile = "$makedir/Makefile.inc";
exit if -f $makefile;
my @modules = (
{
module => 'ApacheLog',
check => 'Apache::Log',
# file => '${PERL_ARCH}/Apache/Log.pm',
port => 'www/mod_perl',
# man3 => 'Log::Dispatch::ApacheLog',
},
{
module => 'Email::MIMELite',
check => 'MIME::Lite',
port => 'mail/p5-MIME-Lite',
},
{
module => 'Email::MailSend',
check => 'Mail::Send',
port => 'mail/p5-Mail-Tools',
},
{
module => 'Email::MailSendmail',
check => 'Mail::Sendmail',
port => 'mail/p5-Mail-Sendmail',
},
{
module => 'Syslog',
check => 'Sys::Syslog',
port => 'base perl',
nodepend=> 1,
}
);
scan_modules(@modules);
@modules = select_modules(@modules);
generate_makefile_inc(@modules);
exit;
sub generate_makefile_inc
{
my @modules = @_;
mkdir $makedir, 0777;
open INC, "> $makefile" or die "open: $makefile: $!\n";
for my $m (@modules) {
next if $m->{nodepend};
my $mpath = $m->{found} || "/nonexistent";
$mpath = varify_hardcoded_paths($mpath);
my $port = $m->{port};
print INC "BUILD_DEPENDS+= $mpath:\${PORTSDIR}/$port\n";
}
close INC;
}
sub varify_hardcoded_paths
{
local ($_) = @_;
s|(perl5/site_perl/)([\d._]+)/|$1\${PERL_VER}/|;
s|(perl5/site_perl/\${PERL_VER}/)mach/|$1\${PERL_ARCH}/|;
s|^$ENV{LOCALBASE}/|\${LOCALBASE}/|;
$_;
}
sub got_module
{
my ($m) = @_;
$m =~ s|::|/|g;
$m .= ".pm";
for (@INC) {
my $f = "$_/$m";
return $f if -r $f;
}
return 0;
}
sub scan_modules
{
my @modules = @_;
for my $module (@modules) {
$module->{found} = got_module($module->{check});
}
}
sub select_modules
{
my @modules = @_;
my @selected;
if ($batch) {
@selected = batch_select(@_);
} else {
@selected = ask_user(@_);
}
my @mod;
my %modules = map { $_->{module} => $_ } @modules;
for my $module (@selected) {
push @mod, $modules{$module} if exists $modules{$module};
}
@mod;
}
sub batch_select
{
my @modules = @_;
my @selected;
for my $module (@modules) {
push @selected, $module->{module} if $module->{found};
}
@selected;
}
sub ask_user
{
my @modules = @_;
my @dlg;
push @dlg, "/usr/bin/dialog";
push @dlg, "--title", "Log::Dispatch configuration";
push @dlg, "--clear", "--checklist", <<EOF;
Log::Dispatch distribution provides several predefined output objects.
Select output objects you will likely need. Those output objects for
which no extra software packages need to be installed are preselected.
Please choose options by pressing SPACE to TOGGLE on option ON/OFF
EOF
push @dlg, -1, -1, 9;
for my $module (@modules) {
push @dlg, $module->{module}, "requires $module->{check}" .
($module->{found} ? " (already installed)" : ""),
($module->{found} ? "ON" : "OFF");
}
my @selected;
my $pid = open(RESULT, "-|");
if ($pid) {
# parent
my $r = "";
while (<RESULT>) {
$r .= $_;
}
close(RESULT) or die "dialog(1) exited with non-zero return code\n";
$r =~ s/"//g;
$r =~ s/\s+/ /g;
@selected = split ' ', $r;
} elsif (defined $pid) {
# child
open XCHG, ">& STDOUT" or die "dup: $!\n";
open STDOUT, ">& STDERR" or die "dup: $!\n";
open STDERR, ">& XCHG" or die "dup: $!\n";
close XCHG if fileno(XCHG) > 2;
exec @dlg or die "cannot exec: $!\n";
} else {
die "cannot fork: $!\n";
}
return @selected;
}