---
name: "Log::Log4perl::Config::BaseConfigurator"
section: "3pm"
platform: "linux"
package: "perl-log-log4perl"
version: "1.58-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Log::Log4perl::Config::BaseConfigurator"
---

# Log::Log4perl::Config::BaseConfigurator(3pm)

Configurator Base Class

## 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-2026 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.
