The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

NAME

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

SYNOPSIS

##========================================================================
## PRELIMINARIES
##========================================================================
## 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), ...