NAME
Log::Handler::Config - The main config loader.
SYNOPSIS
use
Log::Handler;
my
$log
= Log::Handler->new();
# Config::General
$log
->config(
config
=>
'file.conf'
);
# Config::Properties
$log
->config(
config
=>
'file.props'
);
# YAML
$log
->config(
config
=>
'file.yaml'
);
Or
use
Log::Handler;
my
$log
= Log::Handler->new();
$log
->config(
config
=>
'file.conf'
plugin
=>
'YAML'
,
);
DESCRIPTION
This module makes it possible to load the configuration from a file. The configuration type is determined by the file extension. It's also possible to mix file extensions with another configuration types.
PLUGINS
Plugin name File extensions
------------------------------------------
Config::General cfg, conf
Config::Properties props, jcfg, jconf
YAML yml, yaml
If the extension is not defined then Config::General
is used by default.
METHODS
config()
With this method it's possible to load the configuration for your outputs.
The following options are valid:
- config
-
With this option you can pass a file name or the configuration as a hash reference.
$log
->config(
config
=>
'file.conf'
);
# or
$log
->config(
config
=> \
%config
);
- plugin
-
With this option it's possible to say which plugin you want to use. Maybe you want to use the file extension
conf
withYAML
, which is reserved for the pluginConfig::General
.Examples:
# this would use Config::General
$log
->config(
config
=>
'file.conf'
);
# this would force .conf with YAML
$log
->config(
config
=>
'file.conf'
,
plugin
=>
'YAML'
);
- section
-
If you want to write the configuration into a global configuration file then you can create a own section for the logger:
<logger>
<file>
filename = file.
log
minlevel = emerg
maxlevel = warning
</file>
<screen>
minlevel = emerg
maxlevel = debug
</screen>
</logger>
<another_script_config>
foo = bar
bar = baz
baz = foo
</another_script_config>
Now your configuration is placed in the
logger
section. You can load this section with$log
->config(
config
=>
'file.conf'
,
section
=>
'logger'
,
);
# or if you load the configuration yourself to %config
$log
->config(
config
=> \
%config
,
section
=>
'logger'
,
);
# or just
$log
->config(
config
=>
$config
{logger} );
PLUGINS
Config::General - inspired by the well known apache config
format
Config::Properties - Java-style property files
YAML - optimized
for
human readability
EXAMPLES
Config structures
A very simple configuration looks like:
$log
->config(
config
=> {
file
=> {
alias
=>
'file1'
,
filename
=>
'file1.log'
,
maxlevel
=>
'info'
,
minlevel
=>
'warn'
,
},
screen
=> {
alias
=>
'screen1'
,
maxlevel
=>
'debug'
,
minlevel
=>
'emerg'
,
}
});
Now, if you want to add another file-output then you can pass the outputs with a array reference:
$log
->config(
config
=> {
file
=> [
{
alias
=> 'file1,
filename
=>
'file1.log'
,
maxlevel
=>
'info'
,
minlevel
=>
'warn'
,
},
{
alias
=>
'file2'
,
filename
=>
'file2.log'
,
maxlevel
=>
'error'
,
minlevel
=>
'emergency'
,
}
],
screen
=> {
alias
=>
'screen1'
,
maxlevel
=>
'debug'
,
minlevel
=>
'emerg'
,
},
});
It's also possible to pass the outputs as a hash reference. The hash keys "file1" and "file2" will be used as aliases.
$log
->config(
config
=> {
file
=> {
file1
=> {
filename
=>
'file1.log'
,
maxlevel
=>
'info'
,
minlevel
=>
'warn'
,
},
file2
=> {
filename
=>
'file2.log'
,
maxlevel
=>
'error'
,
minlevel
=>
'emergency'
,
}
},
screen
=> {
alias
=>
'screen1'
,
maxlevel
=>
'debug'
,
minlevel
=>
'emerg'
,
},
});
If you pass the configuration with the alias as a hash key then it's also possible to pass a section called "default". The options from this section will be used as defaults.
$log
->config(
config
=> {
file
=> {
default
=> {
# defaults for all file-outputs
mode
=>
'append'
,
},
file1
=> {
filename
=>
'file1.log'
,
maxlevel
=>
'info'
,
minlevel
=>
'warn'
,
},
file2
=> {
filename
=>
'file2.log'
,
maxlevel
=>
'error'
,
minlevel
=>
'emergency'
,
}
},
screen
=> {
alias
=>
'screen1'
,
maxlevel
=>
'debug'
,
minlevel
=>
'emerg'
,
},
});
Examples for the config plugins
Config::General
<file>
alias = file1
fileopen = 1
reopen = 1
permissions = 0640
maxlevel = info
minlevel =
warn
mode = append
timeformat =
%b
%d
%H
:
%M
:
%S
debug_mode = 2
filename = example.
log
message_layout =
'%T %H[%P] [%L] %S: %m'
</file>
Or
<file>
<file1>
fileopen = 1
reopen = 1
permissions = 0640
maxlevel = info
minlevel =
warn
mode = append
timeformat =
%b
%d
%H
:
%M
:
%S
debug_mode = 2
filename = example.
log
message_layout =
'%T %H[%P] [%L] %S: %m'
</file1>
</file>
YAML
---
file:
alias: file1
debug_mode: 2
filename: example.
log
fileopen: 1
maxlevel: info
minlevel:
warn
mode: append
permissions: 0640
message_layout:
'%T %H[%P] [%L] %S: %m'
reopen: 1
timeformat:
'%b %d %H:%M:%S'
Or
---
file:
file1:
debug_mode: 2
filename: example.
log
fileopen: 1
maxlevel: info
minlevel:
warn
mode: append
permissions: 0640
message_layout:
'%T %H[%P] [%L] %S: %m'
reopen: 1
timeformat:
'%b %d %H:%M:%S'
Config::Properties
file.alias = file1
file.reopen = 1
file.fileopen = 1
file.maxlevel = info
file.minlevel =
warn
file.permissions = 0640
file.mode = append
file.timeformat =
%b
%d
%H
:
%M
:
%S
file.debug_mode = 2
file.filename = example.
log
file.message_layout =
'%T %H[%P] [%L] %S: %m'
Or
file.file1.alias = file1
file.file1.reopen = 1
file.file1.fileopen = 1
file.file1.maxlevel = info
file.file1.minlevel =
warn
file.file1.permissions = 0640
file.file1.mode = append
file.file1.timeformat =
%b
%d
%H
:
%M
:
%S
file.file1.debug_mode = 2
file.file1.filename = example.
log
file.file1.message_layout =
'%T %H[%P] [%L] %S: %m'
PREREQUISITES
Carp
Params::Validate
EXPORTS
No exports.
REPORT BUGS
Please report all bugs to <jschulz.cpan(at)bloonix.de>.
If you send me a mail then add Log::Handler into the subject.
AUTHOR
Jonny Schulz <jschulz.cpan(at)bloonix.de>.
COPYRIGHT
Copyright (C) 2007-2009 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.