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 its "parse()"
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's "text()"
method will return a reference to an array of configuration text lines. This
will typically be used by the "parse()" 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, Screen
log4perl.appender.Screen = Log::Log4perl::Appender::File
log4perl.appender.Screen.filename = test.log
log4perl.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!)
COPYRIGHT AND LICENSE¶
Copyright 2002-2009 by Mike Schilli <m@perlmeister.com> and Kevin Goess
<cpan@goess.org>.
This library is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.