File: //usr/share/perl5/DBMon/Log.pm
package DBMon::Log;
use Exporter ();
use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
$VERSION = 0.01;
@ISA = qw (Exporter);
@EXPORT = qw (say);
@EXPORT_OK = qw (say);
%EXPORT_TAGS = ();
use strict;
use Sys::Syslog qw(:DEFAULT setlogsock);
my $init = 0;
my $f = 0;
my $syslog = 0;
my @LOG_LEVELS = ('emerg', 'alert', 'crit', 'err', 'warning', 'notice', 'info', 'debug');
my %allowed_log_levels;
sub say
{
my $msg = shift;
my $level = shift||'info';
return 1 unless (defined ($allowed_log_levels{$level}));
if ($f)
{
my $time = scalar localtime;
if (open (FO, ">>$f")) {;
print FO "[$time] [$level] $msg\n";
close FO;
}
}
syslog ($level, $msg) if($syslog);
return 1;
}
sub init
{
return 1 if ($init);
$init = 1;
my $to_file = shift;
my $log_file = shift;
$syslog = shift||0;
my $level = shift||'info';
for (my $i=0;$i<@LOG_LEVELS;$i++) {
$allowed_log_levels{$LOG_LEVELS[$i]} = 1;
last if ($LOG_LEVELS[$i] eq $level);
}
$f = $log_file if ($to_file);
if ($syslog)
{
setlogsock('unix');
openlog("DBMon", 'cons,pid', 'user');
}
return 1;
}
DESTROY
{
closelog() if ($syslog);
}
1;