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.