NAME
Log::Log4perl::Config::BaseConfigurator - Configurator Base Class
SYNOPSIS
This is a virtual base class, all configurators should be derived from it.
DESCRIPTION
METHODS
- "new"
-
Constructor, typically called like
my $config_parser = SomeConfigParser->new(file => $file,);my $data = $config_parser->parse();Instead of
"file", the derived class"SomeConfigParser"may define any type of configuration input medium (e.g."url => 'http://foobar'"). It just has to make sure itsparse()method will later pull the input data from the medium specified.The base class accepts a filename or a reference to an array of text lines:
- "file"
-
Specifies a file which the
parse()method later parses.
- "text"
-
Specifies a reference to an array of scalars, representing configuration records (typically lines of a file). Also accepts a simple scalar, which it splits at its newlines and transforms it into an array:
my $config_parser = MyYAMLParser->new(text => ['foo: bar','baz: bam',],);my $data = $config_parser->parse();
If either
"file"or"text"parameters have been specified in the constructor call, a later call to the configurator'stext()method will return a reference to an array of configuration text lines. This will typically be used by theparse()method to process the input.
- "parse"
-
Virtual method, needs to be defined by the derived class.
Parser requirements
- •
-
If the parser provides variable substitution functionality, it has to implement it.
- •
-
The parser's
parse()method returns a reference to a hash of hashes (HoH). The top-most hash contains the top-level keywords ("category","appender") as keys, associated with values which are references to more deeply nested hashes.
- •
-
The
"log4perl."prefix (e.g. as used in the PropertyConfigurator class) is stripped, it's not part in the HoH structure.
- •
-
Each Log4perl config value is indicated by the
"value"key, as in$data->{category}->{Bar}->{Twix}->{value} = "WARN, Logfile"
EXAMPLES
The following Log::Log4perl configuration:
log4perl.category.Bar.Twix = WARN, Screenlog4perl.appender.Screen = Log::Log4perl::Appender::Filelog4perl.appender.Screen.filename = test.loglog4perl.appender.Screen.layout = Log::Log4perl::Layout::SimpleLayout
needs to be transformed by the parser's parse() method into this data structure:
{ appender => {Screen => {layout => {value => "Log::Log4perl::Layout::SimpleLayout" },value => "Log::Log4perl::Appender::Screen",},},category => {Bar => {Twix => {value => "WARN, Screen" }} }}
For a full-fledged example, check out the sample YAML parser implementation in "eg/yamlparser". It uses a simple YAML syntax to specify the Log4perl configuration to illustrate the concept.
SEE ALSO
Log::Log4perl::Config::PropertyConfigurator
Log::Log4perl::Config::DOMConfigurator
Log::Log4perl::Config::LDAPConfigurator (tbd!)
LICENSE
Copyright 2002-2026 by Mike Schilli <[email protected]> and Kevin Goess <[email protected]>.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.