NAME

DiaColloDB::Logger - DiaColloDB logging (using Log::Log4perl)

SYNOPSIS

 ##========================================================================
 ## PRELIMINARIES
 
 use DiaColloDB::Logger;
 
 ##========================================================================
 ## Globals
 
 $DEFAULT_LOG_CONF = PACKAGE->defaultLogConf(%opts);
 $bool = CLASS::haveFileRotate();
 $bool = CLASS::haveSyslog();
 
 ##========================================================================
 ## Functions: Initialization
 
 undef = PACKAGE->logInit(%opts)  ##-- use default configuration with %opts;
 undef = PACKAGE->ensureLog(@args)        ##-- ensure a Log::Log4perl has been initialized;
 
 ##========================================================================
 ## Methods: get logger
 
 $logger = $class_or_obj->logger();
 
 ##========================================================================
 ## Methods: messages
 
 undef = $class_or_obj->trace(@msg);
 undef = $class_or_obj->llog($level, @msg);
 undef = $class_or_obj->vlog($methodname_or_coderef_or_undef, @msg);
 
 ##========================================================================
 ## Methods: carp & friends
 
 undef = $class_or_obj->logwarn(@msg);
 undef = $class_or_obj->logcarp(@msg);
 undef = $class_or_obj->logcluck(@msg);
 
 undef = $class_or_obj->logdie(@msg);
 undef = $class_or_obj->logcroak(@msg);
 undef = $class_or_obj->logconfess(@msg);
 
 ##========================================================================
 ## Utils: Getopt::Long specification
 
 %getoptLongHash = $PACKAGE->cldbLogOptions(%localOpts);
 
 ##========================================================================
 ## Utils: Profiling
 
 undef = $logger->logProfile($level, $elapsed_secs, $ntoks, $nchrs);
 

DESCRIPTION

Globals

Variable: $MIN_LEVEL

symbolic name of minimum log level (default = minimum-valued key of %Log::Log4perl::Level::LEVELS).

Variable: %defaultLogOpts

default log options.

defaultLogConf
 $DEFAULT_LOG_CONF = PACKAGE->defaultLogConf(%opts);

Return default configuration for Log::Log4perl; see Log::Log4perl(3pm), Log::Log4perl::Config(3pm) for details.

%opts:

 rootLevel => $LEVEL_OR_UNDEF,  ##-- min root log level (default='WARN' or 'FATAL', depending on $^W)
 level     => $LEVEL_OR_UNDEF,  ##-- min log level (default=$MIN_LEVEL or 'INFO', depending on $^W)
 stderr    => $bool,            ##-- whether to log to stderr (default=1)
 logtime   => $bool,            ##-- whether to log time-stamps on stderr (default=0)
 logdate   => $bool,            ##-- whether to log date+time-stamps on stderr (default=0)
 logwhich  => \@classes,        ##-- log4perl-style classes to log (default=qw(DiaColloDB DocClassify DTA.CAB DTA.TokWrap))
 file      => $filename,        ##-- log to $filename if true
 rotate    => $bool,            ##-- use Log::Dispatch::FileRotate if available and $filename is true
 syslog    => $bool,            ##-- use Log::Dispatch::Syslog if available and true (default=false)
 sysLevel  => $level,           ##-- minimum level for syslog (default='debug' or 'info', depending on $^W)
                                ##   : available levels: debug,info,notice,warning,error,critical,alert,emergency (== 0..7)
 sysName   => $sysName,         ##-- name for syslog (default=basename($0))
 sysIdent  => $sysIdent,        ##-- ident string for syslog (default=$sysName)
 sysFacility => $facility,      ##-- facility for syslog (default='daemon')
haveFileRotate
 $bool = CLASS::haveFileRotate();

returns true if Log::Dispatch::FileRotate is available

haveSyslog
 $bool = CLASS::haveSyslog();

returns true if Log::Dispatch::Syslog is available

Functions: Initialization

logInit
 undef = PACKAGE->logInit(%opts)  ##-- use default configuration with %opts;
  • %opts: see defaultLogConf()

  • all log calls in the DiaColloDB namespace should use a subcategory of 'DiaColloDB'

  • only needs to be called once; see Log::Log4perl->initialized()

ensureLog
 undef = PACKAGE->ensureLog(@args)

ensures that Log::Log4perl has been initialized.

Methods: get logger

logger
 $logger = $class_or_obj->logger();
 $logger = $class_or_obj->logger($category);
  • wrapper for Log::Log4perl::get_logger($category)

  • $category defaults to ref($class_or_obj)||$class_or_obj

Methods: messages

trace
debug
info
warn
error
fatal
 undef = $class_or_obj->trace(@msg);

Log::Log4perl wrappers. Be sure you have called Log::Log4perl::init() or similar first.

llog
 undef = $class_or_obj->llog($level, @msg);

Log at level $level, which should be some constant exported by Log::Log4perl::Level.

vlog
 undef = $class_or_obj->vlog($methodname_or_coderef_or_undef, @msg);

Log via $methodname_or_coderef_or_undef; calls $methodname_or_coderef_or_undef($class_or_obj,@msg) if defined, e.g.

 $class_or_obj->vlog('trace', @msg);

Methods: carp & friends

logwarn
logcarp
logcluck
logdie
logcroak
logconfess
 $class_or_obj->logwarn(@msg);

Wraps $class_or_obj->logger->logwarn(@msg), etc.

Utils: Getopt::Long specification

cldbLogOptions
 %getoptLongHash = $PACKAGE->cldbLogOptions(%localOpts);

Return Getopt::Long|Getopt::Long> option hash for common logging options.

%localOpts:

 verbose => $bool,   ##-- if true, add 'verbose|v' as alias for 'log-level'

Supports the following options:

 'log-level|loglevel|ll|L=s' => \$defaultLogOpts{level},
 'log-config|logconfig|log4perl-config|l4p-config|l4p=s' => \$defaultLogOpts{l4pfile},
 'log-watch|logwatch|watch|lw=i' => \$defaultLogOpts{watch},
 'nolog-watch|nologwatch|nowatch|nolw' => sub { $defaultLogOpts{watch}=undef; },
 'log-stderr|stderr|lse!' => \$defaultLogOpts{stderr},
 'log-file|lf=s' => \$defaultLogOpts{file},
 'nolog-file|nolf' => sub { $defaultLogOpts{file}=undef; },
 'log-rotate|rotate|lr!' => \$defaultLogOpts{rotate},
 'log-syslog|syslog|ls!' => \$defaultLogOpts{syslog},
 'log-option|logopt|lo=s' => \%defaultLogOpts,

Utils: Profiling

logProfile
 undef = $logger->logProfile($level, $elapsed_secs, $ntoks, $nchrs);

Produces a profiling string used by command-line utilities, logged at level $level via vlog().

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2015-2020 by Bryan Jurish

This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.

SEE ALSO

DiaColloDB(3pm), perl(1), ...