dwww Home | Manual pages | Find package

Config::BaseConfiguratUserpContributed Perl DocumConfig::BaseConfigurator(3pm)

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!)

LICENSE
       Copyright 2002-2013 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.

AUTHOR
       Please contribute patches to the project on Github:

           http://github.com/mschilli/log4perl

       Send bug reports or requests for enhancements to the authors via our

       MAILING LIST (questions, bug reports, suggestions/patches):
       log4perl-devel@lists.sourceforge.net

       Authors (please contact them via the list above, not directly): Mike
       Schilli <m@perlmeister.com>, Kevin Goess <cpan@goess.org>

       Contributors (in alphabetical order): Ateeq Altaf, Cory Bennett, Jens
       Berthold, Jeremy Bopp, Hutton Davidson, Chris R. Donnelly, Matisse
       Enzer, Hugh Esco, Anthony Foiani, James FitzGibbon, Carl Franks, Dennis
       Gregorovic, Andy Grundman, Paul Harrington, Alexander Hartmaier  David
       Hull, Robert Jacobson, Jason Kohles, Jeff Macdonald, Markus Peter,
       Brett Rann, Peter Rabbitson, Erik Selberg, Aaron Straup Cope, Lars
       Thegler, David Viner, Mac Yang.

perl v5.36.0                      2022-10-30     Config::BaseConfigurator(3pm)

Generated by dwww version 1.15 on Mon Jul 1 03:07:12 CEST 2024.