Mail-Decency
view release on metacpan or search on metacpan
lib/Mail/Decency/Helper/Logger.pm view on Meta::CPAN
package Mail::Decency::Helper::Logger;
use Moose;
use version 0.74; our $VERSION = qv( "v0.1.4" );
use Sys::Syslog qw/ :standard :macros /;
use Scalar::Util qw/ weaken /;
use File::Path qw/ make_path /;
use Carp qw/ carp /;
=head1 NAME
Mail::Decency::Helper::Logger
=head1 DESCRIPTION
Helper modules for Decency policies or content filters
=cut
has prefix => ( is => 'rw', isa => 'Str', default => '' );
has syslog => ( is => 'rw', isa => 'Bool' );
has console => ( is => 'rw', isa => 'Bool' );
has directory => ( is => 'rw', isa => 'Str' );
has log_level => ( is => 'rw', default => 0 );
has disabled => ( is => 'rw', isa => 'Bool', default => 0 );
has _log_level => ( is => 'ro', isa => 'HashRef', default => sub { {
error => 0,
info => 1,
verbose => 2,
debug0 => 3,
debug1 => 4,
debug2 => 5,
debug3 => 6,
} } );
has _log_file_handles => ( is => 'rw', isa => 'HashRef', default => sub { {} } );
has _log_file_inodes => ( is => 'rw', isa => 'HashRef', default => sub { {} } );
has _log_method => ( is => 'rw', isa => 'CodeRef' );
sub BUILD {
my ( $self, $args_ref ) = @_;
my @print = ();
# determine log level
my $log_level = defined $args_ref->{ log_level }
? $args_ref->{ log_level }
: "info"
;
$log_level = $log_level !~ /^\d+$/
? ( defined $self->_log_level->{ $log_level }
? $self->_log_level->{ $log_level }
: 1
)
: $log_level
;
$self->log_level( $log_level );
push @print, "LogLevel: $log_level";
# determine output
foreach my $output( qw/ syslog console directory / ) {
$self->$output( $args_ref->{ $output } )
if $args_ref->{ $output };
}
my @methods = ();
# enable syslog
if ( $self->syslog ) {
openlog( "decency", "ndelay,pid", "local0" );
push @methods, sub {
my ( $self, $int_log_level, $str_log_level, $msg ) = @_;
my $level = $int_log_level == 0
? LOG_ERR
: ( $int_log_level == 1
? LOG_INFO
: LOG_DEBUG
)
;
my $suffix = $level == LOG_DEBUG
? "/$str_log_level"
: ""
;
Sys::Syslog::syslog( $level => "[". $self->prefix. $suffix. "]: $msg" );
( run in 0.717 second using v1.01-cache-2.11-cpan-39bf76dae61 )