The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Log::Handler::Config - A simple config loader.

SYNOPSIS

    my $log = Log::Handler->new;

    $log->config(filename => 'file.conf');

DESCRIPTION

This module makes it possible to load the configuration for the Log::Handler.

METHODS

config()

With this method it's possible to load a configuration for your logger.

If your configuration contains a default section then this parameters are used for all other log files. Example:

    <default>
        mode = append
    </default>

    <file1>
        filename = file1.log
    </file2>

    <file2>
        filename = file2.log
    </file2>

    <file3>
        filename = file3.log
        mode     = trunc
    </file3>

The option mode is set for file1.log and file2.log to append, for file3.log it's set to trunc.

filename

The configuration file.

plugin

The plugin you want to use to load the configuration file. There are 3 plugins available:

    Config::General
    Config::Properties
    YAML

section

Load the logger configuration from a main section. Example:

    <Log::Handler>
        <log_all>
            filename = file.log
            minlevel = 0
            maxlevel = 7
        </mylog>
    </Log::Handler>

    <Another_Script_Config>
        foo = bar
    </Another_Script_Config>

Now you just want to load the the section Log::Handler. You can do this with

    $log->config(
        filename => 'file.conf',
        section  => 'logger',
    );

    # or if you got the configuration already

    $log->config(
        config  => $config,
        section => 'logger',
    );

config

With this option you can pass a configuration that you got already.

PLUGINS

Config::General

    Config::General     -  inspired by the well known apache config format
    Config::Properties  -  Java-style property files
    YAML                -  optimized for human readability

EXAMPLES

Load from a section

The config (Config::General)

    <logger>
        <default>
            newline     = 1
            permissions = 0640
            timeformat  = %b %d %H:%M:%S
            fileopen    = 1
            reopen      = 1
            mode        = append
            prefix      = "%T %H[%P] [%L] %S: "
            trace       = 0
            debug_mode  = 2
        </default>

        <common>
            filename    = example.log
            maxlevel    = info
            minlevel    = warn
        </common>

        <error>
            filename    = example-error.log
            maxlevel    = warn
            minlevel    = emergency
            trace       = 1
        </error>

        <debug>
            filename    = example-debug.log
            maxlevel    = debug
            minlevel    = debug
        </debug>
    </logger>

Load the config

    $log->config(
        filename => 'file.conf',
        section  => 'Log::Handler',
        plugin   => 'Config::General',
    );

Simple configuration without a main section

The config (Config::General)

    <default>
        newline     = 1
        permissions = 0640
        timeformat  = %b %d %H:%M:%S
        fileopen    = 1
        reopen      = 1
        mode        = append
        prefix      = "%T %H[%P] [%L] %S: "
        trace       = 0
        debug_mode  = 2
    </default>

    <common>
        filename    = example.log
        maxlevel    = info
        minlevel    = warn
    </common>

    <error>
        filename    = example-error.log
        maxlevel    = warn
        minlevel    = emergency
        trace       = 1
    </error>

    <debug>
        filename    = example-debug.log
        maxlevel    = debug
        minlevel    = debug
    </debug>

Load the config

    $log->config(
        filename => 'file.conf',
        section  => 'Log::Handler',
        plugin   => 'Config::General',
    );

The config as hash

    $log->config(
        config => {
            default => {
                newline     => 1,
                permissions => '0640',
                timeformat  => '%b %d %H:%M:%S',
                fileopen    => 1,
                reopen      => 1,
                mode        => 'append
                prefix      => '%T %H[%P] [%L] %S: ',
                trace       => 0,
                debug_mode  => 2,
            },
            common => {
                filename    => 'example.log',
                maxlevel    => 'info',
                minlevel    => 'warn',
            },
            error => {
                filename    => 'example-error.log',
                maxlevel    => 'warn',
                minlevel    => 'emergency',
                trace       => 1,
            },
            debug => {
                filename    => 'example-debug.log',
                maxlevel    => 'debug',
                minlevel    => 'debug',
            },
        }
    );

PREREQUISITES

    Carp
    Params::Validate
    UNIVERSAL::require

EXPORTS

No exports.

REPORT BUGS

Please report all bugs to <jschulz.cpan(at)bloonix.de>.

AUTHOR

Jonny Schulz <jschulz.cpan(at)bloonix.de>.

COPYRIGHT

Copyright (C) 2007 by Jonny Schulz. All rights reserved.

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