The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Log::Log4perl::Config::YamlConfigurator - Reads Log4perl YAML configurations

SYNOPSIS

  use Log::Log4perl qw();
  use YAML::PP      qw( Load );

  use Log::Log4perl::Config::YamlConfigurator ();

  ( my $text = <<'EOT' ) =~ s/^ {2}//gm;
    ---
    rootLogger: INFO, SCREEN
    category:
      Foo:
        Bar:
          name: DEBUG, SCREEN, FILE
          Baz: INFO, FILE
    additivity:
      Foo:
        Bar: 0
    appender:
      SCREEN: 
        name: Log::Log4perl::Appender::Screen
        layout: Log::Log4perl::Layout::SimpleLayout
      FILE: 
        name: Log::Log4perl::Appender::File
        filename: file.log
        mode: append
        create_at_logtime: 1
        layout:
          name: Log::Log4perl::Layout::PatternLayout::Multiline
          ConversionPattern: '%d{HH:mm:ss} %-5p [%M{3}, %L] - %m%n'
      STDERR: 
        name: Log::Log4perl::Appender::Screen
        stderr: 1
        utf8: 1
        layout: Log::Log4perl::Layout::SimpleLayout
  EOT

  my $configurator = Log::Log4perl::Config::YamlConfigurator->new(
    data => Load( $text )
  );

  # or

  my $configurator = Log::Log4perl::Config::YamlConfigurator->new(
    text => [ $text ]
  );

  # calls $configurator->parse implicitly
  Log::Log4perl->init( $configurator );

  # or

  Log::Log4perl->init( undef, $configurator->parse );

  my $appender = $configurator->create_appender_instance( 'STDERR' );

  # add appender to a given logger object
  $logger->add_appender( $appender );

DESCRIPTION

This configurator class is a subclass of Log::Log4perl::Config::BaseConfigurator that is able to process Log4perl YAML configurations.

METHODS

new()

The constructor has one additional optional parameter data. Its value is a specific Perl data structure: a HASH reference with the mandatory keys category, and appender. Optional keys are rootLogger, additivity, and some more. The HASH reference is usually the return value of a YAML::PP::Load() function call, if a Log4perl configuration is passed as a YAML stream to this function. Alternatively you may use the text parameter to pass the Log4perl YAML configuration directly to the constructor.

parse()

The implementation of this abstract object method fulfills the "Parser-requirements" in Log::Log4perl::Config::BaseConfigurator. It does not provide variable substitution functionality yet.

create_appender_instance()

If you pass an appender name to this object method, it returns a Log::Log4perl::Appender object. This even works, if the appender is not bound to any logger (see "SYNOPSIS"). If the appender name is unknown the method call dies.

AUTHOR

Sven Willenbuecher <sven.willenbuecher@gmx.de>

COPYRIGHT AND LICENSE

This software is copyright (c) 2024 by Sven Willenbuecher.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.